parallel ip - initial checkin

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/.project b/.project
new file mode 100644
index 0000000..5c29e84
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.cubedsl.aggregator</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/about.html b/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/about.html
@@ -0,0 +1,28 @@
+<!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"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</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>.
+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 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/jenkins.build.config.xml b/jenkins.build.config.xml
new file mode 100644
index 0000000..42d3ae2
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2016 - Loetz GmbH&Co.KG                                    -->
+<!--# All rights reserved. This program and the accompanying materials 		 -->
+<!--# are made available under the terms of the Eclipse Public License v1.0  -->
+<!--# which accompanies this distribution, and is available at               -->
+<!--# http://www.eclipse.org/legal/epl-v10.html                              -->
+<!--#                                                                        -->
+<!--# Contributors:                                                          -->
+<!--# Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation                           -->
+<!--#======================================================================= -->
+<!--# Module specific parameters for the Jenkins Job 						 -->
+<!--#======================================================================= -->
+
+<jenkins>
+	<!-- DO NOT EDIT BELOW THIS LINE -->
+        <jenkins.build.dependencies>
+                <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.persistence</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
+        </jenkins.build.dependencies>
+</jenkins>
diff --git a/notice.html b/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/notice.html
@@ -0,0 +1,107 @@
+<?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" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/.project b/org.eclipse.osbp.xtext.cubedsl.feature/.project
new file mode 100644
index 0000000..4c40670
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.cubedsl.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/LICENSE.txt b/org.eclipse.osbp.xtext.cubedsl.feature/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+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.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+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.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"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.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+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.
+
+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.
+
+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.
+
+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.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+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
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/build.properties b/org.eclipse.osbp.xtext.cubedsl.feature/build.properties
new file mode 100644
index 0000000..b8920ff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = license.html,  epl-v10.html,  feature.xml,\
+               feature.properties
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/epl-v10.html b/org.eclipse.osbp.xtext.cubedsl.feature/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?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.cubedsl.feature/feature.properties b/org.eclipse.osbp.xtext.cubedsl.feature/feature.properties
new file mode 100644
index 0000000..6778442
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cristiano Gavião - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName =OSBP DSL: Cube 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This feature provides the bundles for the OSBP CubeDSL.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+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\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\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\
+\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\
+\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\
+\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\
+\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\
+\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\
+\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\
+\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\
+\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\
+\n\
+\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\
+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\
+\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\
+\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\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/feature.xml b/org.eclipse.osbp.xtext.cubedsl.feature/feature.xml
new file mode 100644
index 0000000..a0137fd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/feature.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.xtext.cubedsl.feature"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.cubedsl"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.cubedsl.tests"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.cubedsl.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/license.html b/org.eclipse.osbp.xtext.cubedsl.feature/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/license.html
@@ -0,0 +1,164 @@
+<!--?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">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>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>
+
+<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><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
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/pom.xml b/org.eclipse.osbp.xtext.cubedsl.feature/pom.xml
new file mode 100644
index 0000000..2617616
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+		<artifactId>org.eclipse.osbp.xtext.cubedsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.xtext.cubedsl.feature</artifactId>
+	<packaging>eclipse-feature</packaging>
+	
+		<build>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho.extras</groupId>
+				<artifactId>tycho-source-feature-plugin</artifactId>
+				<version>${tychoExtrasVersion}</version>
+				<executions>
+					<execution>
+						<id>source-feature</id>
+						<phase>package</phase>
+						<goals>
+							<goal>source-feature</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<labelSuffix> (source)</labelSuffix>
+				</configuration>
+			</plugin>
+			<plugin>
+				<!-- workaround while bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=398250 
+					is not fixed -->
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-p2-plugin</artifactId>
+				<version>${tycho-version}</version>
+				<executions>
+					<execution>
+						<id>attached-p2-metadata</id>
+						<phase>package</phase>
+						<goals>
+							<goal>p2-metadata</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.cubedsl</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.cubedsl.tests</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+			<artifactId>org.eclipse.osbp.xtext.cubedsl.ui</artifactId>
+			<version>0.9.0-SNAPSHOT</version>
+		</dependency>
+	</dependencies>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/.project b/org.eclipse.osbp.xtext.cubedsl.tests/.project
new file mode 100644
index 0000000..b1782ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.cubedsl.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/LICENSE.txt b/org.eclipse.osbp.xtext.cubedsl.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+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.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+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.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"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.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+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.
+
+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.
+
+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.
+
+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.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+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
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.cubedsl.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9258911
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.cubedsl.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.cubedsl.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.cubedsl.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ com.google.inject;bundle-version="3.0.0"
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.cubedsl;version="0.9.0"
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/about.html b/org.eclipse.osbp.xtext.cubedsl.tests/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/about.html
@@ -0,0 +1,28 @@
+<!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"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</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>.
+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 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/about.ini b/org.eclipse.osbp.xtext.cubedsl.tests/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/about.mappings b/org.eclipse.osbp.xtext.cubedsl.tests/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/about.properties b/org.eclipse.osbp.xtext.cubedsl.tests/about.properties
new file mode 100644
index 0000000..de09c92
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.cubedsl.tests
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/build.properties b/org.eclipse.osbp.xtext.cubedsl.tests/build.properties
new file mode 100644
index 0000000..250b9dc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/build.properties
@@ -0,0 +1,13 @@
+source.. = src/,\
+          src-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html			   
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/epl-v10.html b/org.eclipse.osbp.xtext.cubedsl.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?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.cubedsl.tests/license.html b/org.eclipse.osbp.xtext.cubedsl.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/license.html
@@ -0,0 +1,164 @@
+<!--?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">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>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>
+
+<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><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
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/org.eclipse.osbp.xtext.cubedsl.tests.launch b/org.eclipse.osbp.xtext.cubedsl.tests/org.eclipse.osbp.xtext.cubedsl.tests.launch
new file mode 100644
index 0000000..83d99c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/org.eclipse.osbp.xtext.cubedsl.tests.launch
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osbp.xtext.cubedsl.tests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.osbp.xtext.cubedsl.tests"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osbp.xtext.cubedsl.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/pom.xml b/org.eclipse.osbp.xtext.cubedsl.tests/pom.xml
new file mode 100644
index 0000000..18c97f0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.xtext.cubedsl.tests</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+  	<artifactId>org.eclipse.osbp.xtext.cubedsl.aggregator</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+</project>
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLInjectorProvider.java b/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLInjectorProvider.java
new file mode 100644
index 0000000..982988e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLInjectorProvider.java
@@ -0,0 +1,56 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.xtext.junit4.GlobalRegistries;
+import org.eclipse.xtext.junit4.GlobalRegistries.GlobalStateMemento;
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.xtext.junit4.IRegistryConfigurator;
+
+import com.google.inject.Injector;
+
+public class CubeDSLInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
+	
+    protected GlobalStateMemento stateBeforeInjectorCreation;
+	protected GlobalStateMemento stateAfterInjectorCreation;
+	protected Injector injector;
+
+	static {
+		GlobalRegistries.initializeDefaults();
+	}
+
+	public Injector getInjector()
+	{
+		if (injector == null) {
+			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+			this.injector = internalCreateInjector();
+			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+		}
+		return injector;
+	}
+	
+	protected Injector internalCreateInjector() {
+	    return new CubeDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLUiInjectorProvider.java b/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLUiInjectorProvider.java
new file mode 100644
index 0000000..232efe0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLUiInjectorProvider.java
@@ -0,0 +1,27 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class CubeDSLUiInjectorProvider implements IInjectorProvider {
+	
+	public Injector getInjector() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.internal.CubeDSLActivator.getInstance().getInjector("org.eclipse.osbp.xtext.cubedsl.CubeDSL");
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/.project b/org.eclipse.osbp.xtext.cubedsl.ui/.project
new file mode 100644
index 0000000..8eb328b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.cubedsl.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.sonarlint.eclipse.core.sonarlintBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/LICENSE.txt b/org.eclipse.osbp.xtext.cubedsl.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+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.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+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.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"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.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+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.
+
+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.
+
+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.
+
+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.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+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
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.cubedsl.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fbba099
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,36 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.cubedsl.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.cubedsl.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui,
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.basic.ui;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.cubedsl.ui;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.ui.contentassist;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.ui.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.ui.labeling;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.ui.outline;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.ui.quickfix;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.xtext.cubedsl.ui.internal.CubeDSLActivator
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/about.html b/org.eclipse.osbp.xtext.cubedsl.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/about.html
@@ -0,0 +1,28 @@
+<!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"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</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>.
+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 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/about.ini b/org.eclipse.osbp.xtext.cubedsl.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/about.mappings b/org.eclipse.osbp.xtext.cubedsl.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/about.properties b/org.eclipse.osbp.xtext.cubedsl.ui/about.properties
new file mode 100644
index 0000000..293fe03
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.cubedsl.ui
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/build.properties b/org.eclipse.osbp.xtext.cubedsl.ui/build.properties
new file mode 100644
index 0000000..1dab9b5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/build.properties
@@ -0,0 +1,19 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               templates/,\
+               i18n/,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html,\
+               icons/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html,\
+               icons/
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/epl-v10.html b/org.eclipse.osbp.xtext.cubedsl.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?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.cubedsl.ui/i18n/I18N.properties b/org.eclipse.osbp.xtext.cubedsl.ui/i18n/I18N.properties
new file mode 100644
index 0000000..33e9c1c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/i18n/I18N.properties
@@ -0,0 +1,137 @@
+#
+#Thu Apr 28 15:26:34 CEST 2016
+org.eclipse.osbp.xtext.cubedsl.CCCubeAggregatorEnum=
+org.eclipse.osbp.xtext.cubedsl.CCCubeAggregatorEnum.avg=
+org.eclipse.osbp.xtext.cubedsl.CCCubeAggregatorEnum.count=
+org.eclipse.osbp.xtext.cubedsl.CCCubeAggregatorEnum.distinct-count=
+org.eclipse.osbp.xtext.cubedsl.CCCubeAggregatorEnum.max=
+org.eclipse.osbp.xtext.cubedsl.CCCubeAggregatorEnum.min=
+org.eclipse.osbp.xtext.cubedsl.CCCubeAggregatorEnum.sum=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimension=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimension.dimension=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimension.typeTime=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimensionEntity=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimensionEntityEntity=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimensionEntityEntity.over=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimensionUsage=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimensionUsage.dimensionUsage=
+org.eclipse.osbp.xtext.cubedsl.CCCubeDimensionUsage.over=
+org.eclipse.osbp.xtext.cubedsl.CCCubeEntity=
+org.eclipse.osbp.xtext.cubedsl.CCCubeEntity.entity=
+org.eclipse.osbp.xtext.cubedsl.CCCubeEntity.key\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeHierarchy=
+org.eclipse.osbp.xtext.cubedsl.CCCubeHierarchy.allMemberName\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeHierarchy.defaultMember\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeHierarchy.hasAll=
+org.eclipse.osbp.xtext.cubedsl.CCCubeHierarchy.hierarchy=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevel=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevel.column\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevel.level=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevel.levelType\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevel.uniqueMembers=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.Time=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeDays=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeHalfYears=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeHours=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeMinutes=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeMonths=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeQuarters=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeSeconds=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeWeeks=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelLevelType.TimeYears=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelProp=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelProp.column\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelProp.property=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelProp.type\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType.Boolean=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType.Date=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType.Integer=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType.Numeric=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType.String=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType.Time=
+org.eclipse.osbp.xtext.cubedsl.CCCubeLevelPropType.Timestamp=
+org.eclipse.osbp.xtext.cubedsl.CCCubeMeasure=
+org.eclipse.osbp.xtext.cubedsl.CCCubeMeasure.column\==
+org.eclipse.osbp.xtext.cubedsl.CCCubeMeasure.measure=
+org.eclipse.osbp.xtext.cubedsl.CCCubeMeasure.notVisible=
+org.eclipse.osbp.xtext.cubedsl.CCCubeModel=
+org.eclipse.osbp.xtext.cubedsl.CCCubePackage=
+org.eclipse.osbp.xtext.cubedsl.CCCubePackage.package=
+org.eclipse.osbp.xtext.cubedsl.CCCubeQualifiedNameWithWildCard=
+org.eclipse.osbp.xtext.cubedsl.CCCubeType=
+org.eclipse.osbp.xtext.cubedsl.CCCubeType.cube=
+org.eclipse.osbp.xtext.cubedsl.CCCubeType.defaultMeasure=
+org.eclipse.osbp.xtext.cubedsl.CCCubeTypeEntity=
+org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum=
+org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum.avg=
+org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum.count=
+org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum.distinct-count=
+org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum.max=
+org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum.min=
+org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum.sum=
+org.eclipse.osbp.xtext.cubedsl.CubeDimension=
+org.eclipse.osbp.xtext.cubedsl.CubeDimension.dimension=
+org.eclipse.osbp.xtext.cubedsl.CubeDimension.typeTime=
+org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity=
+org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity=
+org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity.over=
+org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage=
+org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage.dimensionUsage=
+org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage.over=
+org.eclipse.osbp.xtext.cubedsl.CubeEntity=
+org.eclipse.osbp.xtext.cubedsl.CubeEntity.entity=
+org.eclipse.osbp.xtext.cubedsl.CubeEntity.key\==
+org.eclipse.osbp.xtext.cubedsl.CubeHierarchy=
+org.eclipse.osbp.xtext.cubedsl.CubeHierarchy.allMemberName\==
+org.eclipse.osbp.xtext.cubedsl.CubeHierarchy.defaultMember\==
+org.eclipse.osbp.xtext.cubedsl.CubeHierarchy.hasAll=
+org.eclipse.osbp.xtext.cubedsl.CubeHierarchy.hierarchy=
+org.eclipse.osbp.xtext.cubedsl.CubeLevel=
+org.eclipse.osbp.xtext.cubedsl.CubeLevel.column\==
+org.eclipse.osbp.xtext.cubedsl.CubeLevel.level=
+org.eclipse.osbp.xtext.cubedsl.CubeLevel.levelType\==
+org.eclipse.osbp.xtext.cubedsl.CubeLevel.uniqueMembers=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.Time=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeDays=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeHalfYears=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeHours=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeMinutes=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeMonths=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeQuarters=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeSeconds=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeWeeks=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType.TimeYears=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelProp=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelProp.column\==
+org.eclipse.osbp.xtext.cubedsl.CubeLevelProp.property=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelProp.type\==
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType.Boolean=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType.Date=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType.Integer=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType.Numeric=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType.String=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType.Time=
+org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType.Timestamp=
+org.eclipse.osbp.xtext.cubedsl.CubeMeasure=
+org.eclipse.osbp.xtext.cubedsl.CubeMeasure.column\==
+org.eclipse.osbp.xtext.cubedsl.CubeMeasure.measure=
+org.eclipse.osbp.xtext.cubedsl.CubeMeasure.notVisible=
+org.eclipse.osbp.xtext.cubedsl.CubeModel=
+org.eclipse.osbp.xtext.cubedsl.CubePackage=
+org.eclipse.osbp.xtext.cubedsl.CubePackage.package=
+org.eclipse.osbp.xtext.cubedsl.CubeQualifiedNameWithWildCard=
+org.eclipse.osbp.xtext.cubedsl.CubeType=
+org.eclipse.osbp.xtext.cubedsl.CubeType.cube=
+org.eclipse.osbp.xtext.cubedsl.CubeType.defaultMeasure=
+org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity=
+org.eclipse.osbp.xtext.cubedsl.Import=
+org.eclipse.osbp.xtext.cubedsl.Import.import=
+org.eclipse.osbp.xtext.cubedsl.LFQN=
+org.eclipse.osbp.xtext.cubedsl.QualifiedName=
+org.eclipse.osbp.xtext.cubedsl.TRANSLATABLEID=
+org.eclipse.osbp.xtext.cubedsl.TRANSLATABLESTRING=
+org.eclipse.osbp.xtext.cubedsl.ValidID=
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cube_level_prop.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cube_level_prop.png
new file mode 100644
index 0000000..25718ea
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cube_level_prop.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedim_e_e.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedim_e_e.png
new file mode 100644
index 0000000..f5f1da1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedim_e_e.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimension.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimension.png
new file mode 100644
index 0000000..ff442d5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimension.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimensionentity.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimensionentity.png
new file mode 100644
index 0000000..96ddae7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimensionentity.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimensionusage.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimensionusage.png
new file mode 100644
index 0000000..7f3203d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubedimensionusage.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubeentity.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubeentity.png
new file mode 100644
index 0000000..a8fb8e9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubeentity.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubelevel.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubelevel.png
new file mode 100644
index 0000000..5cd1d1a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubelevel.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubemeasure.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubemeasure.png
new file mode 100644
index 0000000..0a56700
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubemeasure.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubetype.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubetype.png
new file mode 100644
index 0000000..ef742b0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubetype.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubetypeentity.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubetypeentity.png
new file mode 100644
index 0000000..974168f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/cubetypeentity.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_cube.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_cube.png
new file mode 100644
index 0000000..3d578f2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_cube.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_hierarchy.gif b/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_hierarchy.gif
new file mode 100644
index 0000000..6d46246
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_hierarchy.gif
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_import.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_import.png
new file mode 100644
index 0000000..f4fdcc9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/dsl_import.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/model.png b/org.eclipse.osbp.xtext.cubedsl.ui/icons/model.png
new file mode 100644
index 0000000..cffb857
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/model.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/icons/package.gif b/org.eclipse.osbp.xtext.cubedsl.ui/icons/package.gif
new file mode 100644
index 0000000..34506fb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/icons/package.gif
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/license.html b/org.eclipse.osbp.xtext.cubedsl.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/license.html
@@ -0,0 +1,164 @@
+<!--?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">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>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>
+
+<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><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
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml b/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml
new file mode 100644
index 0000000..f93fddd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml
@@ -0,0 +1,331 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+              class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+              contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+              default="true"
+              extensions="cube"
+              icon="icons/dsl_cube.png"
+              id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+              name="OSBP CubeDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.cubedsl.CubeDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            icon="icons/dsl_cube.png"
+            name="OSBP CubeDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.coloring"
+            icon="icons/dsl_cube.png"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.templates"
+            icon="icons/dsl_cube.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+              icon="icons/dsl_cube.png"
+              id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+              name="CubeDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"
+            label="OSBP CubeDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate"
+            name="Validate">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="cube">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="cube">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.eclipse.osbp.xtext.cubedsl.CubeDSL -->
+    <extension
+            id="cubedsl.check.fast"
+            name="CubeDSL Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="cubedsl.check.normal"
+            name="CubeDSL Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="cubedsl.check.expensive"
+            name="CubeDSL Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.expensive"/>
+        <persistent value="true"/>
+    </extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.preferencePage"
+            icon="icons/dsl_cube.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+              class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+              id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.propertyPage"
+              icon="icons/dsl_cube.png"
+              name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.cubedsl.CubeDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+	        class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.refactoring"
+            icon="icons/dsl_cube.png"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cube">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cube" label="CubeDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="cube">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml_gen
new file mode 100644
index 0000000..5a6cea1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml_gen
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="cube"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            matchingStrategy="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+            name="CubeDSL Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.cubedsl.CubeDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.xtext.cubedsl.CubeDSL" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            name="CubeDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            name="CubeDSL">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"
+            label="CubeDSL"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="cube">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="cube">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.osbp.xtext.cubedsl.CubeDSL -->
+	<extension
+	        id="cubedsl.check.fast"
+	        name="CubeDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="cubedsl.check.normal"
+	        name="CubeDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="cubedsl.check.expensive"
+	        name="CubeDSL Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="cube"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.cubedsl.CubeDSL -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+	        class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy"
+				style="push"
+				tooltip="Open Type Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy"
+				style="push"
+				tooltip="Quick Type Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy"
+				style="push"
+				tooltip="Open Call Hierarchy">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.smap.StratumBreakpointAdapterFactory"
+         adaptableType="org.eclipse.xtext.ui.editor.XtextEditor">
+         <adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>
+      </factory> 
+   </extension>
+   <extension point="org.eclipse.ui.editorActions">
+      <editorContribution targetID="org.eclipse.osbp.xtext.cubedsl.CubeDSL" 
+                          id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="org.eclipse.osbp.xtext.cubedsl.CubeDSL.RulerContext"
+         id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.toggleBreakpointAction">
+         </action>
+         <action
+            label="Not used"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+            menubarPath="debug"
+            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.enableDisableBreakpointAction">
+         </action>
+         <action
+           label="Breakpoint Properties"
+           helpContextId="breakpoint_properties_action_context"
+           class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+           menubarPath="group.properties"
+           id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.openBreapointPropertiesAction">
+         </action>
+      </viewerContribution>
+   </extension>
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+   <!-- Open implementation -->
+   <extension point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+            commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+            <activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+      </handler>
+   </extension>
+ <extension point="org.eclipse.ui.menus">
+       <menuContribution
+            locationURI="menu:navigate?after=open.ext4">
+         <command commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+		<visibleWhen checkEnabled="false">
+              <reference
+                 definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+              </reference>
+		</visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentViewers"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cube">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentMergeViewers"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cube" label="CubeDSL Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.editors.documentProviders"
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="cube">
+    </provider>
+  </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/pom.xml b/org.eclipse.osbp.xtext.cubedsl.ui/pom.xml
new file mode 100644
index 0000000..f8c350f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/pom.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>org.eclipse.osbp.xtext.cubedsl.ui</artifactId>
+  <packaging>eclipse-plugin</packaging>
+  <parent>
+  	<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+  	<artifactId>org.eclipse.osbp.xtext.cubedsl.aggregator</artifactId>
+  	<version>0.9.0-SNAPSHOT</version>
+  	<relativePath>..</relativePath>
+  </parent>
+  <build>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>add-source</id>
+						<phase>initialize</phase>
+						<goals>
+							<goal>add-source</goal>
+						</goals>
+						<configuration>
+							<sources>
+								<source>src-gen</source>
+								<source>xtend-gen</source>
+								<source>emf-gen</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/AbstractCubeDSLUiModule.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/AbstractCubeDSLUiModule.java
new file mode 100644
index 0000000..2b63124
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/AbstractCubeDSLUiModule.java
@@ -0,0 +1,375 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractCubeDSLUiModule extends DefaultUiModule {
+	
+	public AbstractCubeDSLUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.XtextEditor> bindXtextEditor() {
+		return org.eclipse.xtext.xbase.ui.editor.XbaseEditor.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.model.XtextDocumentProvider> bindXtextDocumentProvider() {
+		return org.eclipse.xtext.xbase.ui.editor.XbaseDocumentProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return org.eclipse.xtext.builder.BuilderParticipant.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.labeling.CubeDSLLabelProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.eclipse.osbp.xtext.cubedsl.ui.labeling.CubeDSLDescriptionLabelProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.outline.CubeDSLOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.outline.CubeDSLOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.quickfix.CubeDSLQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.ContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.contentassist.CubeDSLProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.CubeDSLParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLLexer.class));
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JdtRenameSupport.Factory.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider> bindIRenameStrategy$Provider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureJvmMemberRenameStrategy$Provider$Delegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.refactoring.IRenameStrategy.Provider.class).annotatedWith(org.eclipse.xtext.common.types.ui.refactoring.participant.JvmMemberRenameStrategy.Provider.Delegate.class).to(org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategyProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtBasedSimpleTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider> bindITypesProposalProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtTypesProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider> bindIJavaProjectProvider() {
+		return org.eclipse.xtext.common.types.xtext.ui.XtextResourceSetBasedProjectProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IValidationJobScheduler> bindIValidationJobScheduler() {
+		return org.eclipse.xtext.common.types.xtext.ui.JdtValidationJobScheduler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.impl.RefactoringResourceSetProvider> bindRefactoringResourceSetProvider() {
+		return org.eclipse.xtext.common.types.ui.refactoring.JvmRefactoringResourceSetProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper> bindAbstractAntlrTokenToAttributeIdMapper() {
+		return org.eclipse.xtext.xbase.ui.syntaxcoloring.XbaseTokenToAttributeIdMapper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider.ReferenceProposalCreator> bindAbstractJavaBasedContentProposalProvider$ReferenceProposalCreator() {
+		return org.eclipse.xtext.xbase.ui.contentassist.XbaseReferenceProposalCreator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.jface.text.contentassist.IContentAssistProcessor> bindIContentAssistProcessor() {
+		return org.eclipse.xtext.ui.editor.contentassist.RepeatedContentAssistProcessor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
+		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration> bindIHighlightingConfiguration() {
+		return org.eclipse.xtext.xbase.ui.highlighting.XbaseHighlightingConfiguration.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider> bindIEObjectHoverProvider() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.IEObjectHover> bindIEObjectHover() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseDispatchingEObjectTextHover.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+		return org.eclipse.xtext.xbase.ui.hover.XbaseHoverDocumentationProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider.CrossRefResolutionConverter> bindDefaultQuickfixProvider$CrossRefResolutionConverter() {
+		return org.eclipse.xtext.xbase.ui.quickfix.XbaseCrossRefResolutionConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator> bindXbaseUIValidator() {
+		return org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper> bindIHyperlinkHelper() {
+		return org.eclipse.xtext.xbase.ui.navigation.TypeLiteralAwareHyperlinkHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.IFeatureScopeTracker.Provider> bindIFeatureScopeTracker$Provider() {
+		return org.eclipse.xtext.xbase.typesystem.internal.OptimizingFeatureScopeTrackerProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler> bindFindReferencesHandler() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelFindReferenceHandler.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.findrefs.ReferenceQueryExecutor> bindReferenceQueryExecutor() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.findrefs.JvmModelReferenceQueryExecutor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameRefactoringProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+		return org.eclipse.xtext.xbase.ui.refactoring.XbaseReferenceUpdater.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameContextFactory> bindIRenameContextFactory() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.jdt.CombinedJvmJdtRenameContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.refactoring.participant.JdtRenameParticipant.ContextFactory> bindJdtRenameParticipant$ContextFactory() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.JvmModelJdtRenameParticipantContext.ContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.refactoring.DefaultJvmModelRenameStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.OutlineNodeElementOpener> bindOutlineNodeElementOpener() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.outline.JvmOutlineNodeElementOpener.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.GlobalURIEditorOpener> bindGlobalURIEditorOpener() {
+		return org.eclipse.xtext.common.types.ui.navigation.GlobalDerivedMemberAwareURIEditorOpener.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.occurrences.IOccurrenceComputer> bindIOccurrenceComputer() {
+		return org.eclipse.xtext.xbase.ui.jvmmodel.occurrence.JvmModelOccurrenceComputer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation> bindIJavaSearchParticipation() {
+		return org.eclipse.xtext.common.types.ui.query.IJavaSearchParticipation.No.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureLanguageSpecificURIEditorOpener(com.google.inject.Binder binder) {
+		if (org.eclipse.ui.PlatformUI.isWorkbenchRunning()) { 
+			binder.bind(org.eclipse.xtext.ui.editor.IURIEditorOpener.class).annotatedWith(org.eclipse.xtext.ui.LanguageSpecific.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
+			binder.bind(org.eclipse.xtext.common.types.ui.navigation.IDerivedMemberAwareEditorOpener.class).to(org.eclipse.xtext.xbase.ui.jvmmodel.navigation.DerivedMemberAwareEditorOpener.class); 
+		};
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.jface.text.hyperlink.IHyperlinkDetector> bindIHyperlinkDetector() {
+		return org.eclipse.xtext.xbase.ui.navigation.XbaseHyperlinkDetector.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixes> bindJavaTypeQuickfixes() {
+		return org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixesNoImportSection.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+		return org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.PartialCubeDSLContentAssistParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	}
+
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLExecutableExtensionFactory.java
new file mode 100644
index 0000000..fe82f36
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLExecutableExtensionFactory.java
@@ -0,0 +1,40 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.xtext.cubedsl.ui.internal.CubeDSLActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class CubeDSLExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return CubeDSLActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return CubeDSLActivator.getInstance().getInjector(CubeDSLActivator.ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/AbstractCubeDSLProposalProvider.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/AbstractCubeDSLProposalProvider.java
new file mode 100644
index 0000000..9083f5f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/AbstractCubeDSLProposalProvider.java
@@ -0,0 +1,247 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of superclass {@link org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractCubeDSLProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
+		
+	public void completeCubeModel_Pckg(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubePackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubePackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubePackage_Dimensions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubePackage_Cubes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeType_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeType_DefaultMeasure(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeType_DefaultMeasureValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeType_CubeTypeEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionUsage_SourceValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionUsage_OverValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimension_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimension_TypeTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeDimension_Hierarchies(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeHierarchy_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeHierarchy_HasAll(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeHierarchy_AllMemberName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeHierarchy_AllMemberNameValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeHierarchy_DefaultMember(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeHierarchy_DefaultMemberValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeHierarchy_CubeDimEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeEntity_EntityValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeEntity_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeEntity_KeyValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeTypeEntity_EntityRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeTypeEntity_DimensionUsages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeTypeEntity_Measures(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionEntity_EntityRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionEntity_HierarchLevels(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionEntity_DimEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionEntityEntity_EntityRef(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionEntityEntity_OverValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionEntityEntity_HierarchLevels(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeDimensionEntityEntity_DimEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeLevel_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeLevel_LevelColValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeLevel_UniqueMembers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeLevel_LevelType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeLevel_LevelTypeValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeLevel_Properties(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeLevelProp_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeLevelProp_LevelPropColValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeLevelProp_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeCubeLevelProp_TypeValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeMeasure_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeMeasure_Aggregator(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeMeasure_MeasureCol(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCubeMeasure_NotVisible(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_CubeModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubePackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeDimensionUsage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeDimension(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeHierarchy(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeEntity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeTypeEntity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeDimensionEntity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeDimensionEntityEntity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeLevel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeLevelProp(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeMeasure(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeAggregatorEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeLevelPropType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeLevelLevelType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Import(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CubeQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ValidID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LFQN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/CubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/CubeDSLParser.java
new file mode 100644
index 0000000..ab5e1ee
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/CubeDSLParser.java
@@ -0,0 +1,556 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+
+public class CubeDSLParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private CubeDSLGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLParser createParser() {
+		org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLParser result = new org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLParser(null);
+		result.setGrammarAccess(grammarAccess);
+		return result;
+	}
+	
+	@Override
+	protected String getRuleName(AbstractElement element) {
+		if (nameMappings == null) {
+			nameMappings = new HashMap<AbstractElement, String>() {
+				private static final long serialVersionUID = 1L;
+				{
+					put(grammarAccess.getCubeLevelAccess().getAlternatives_6(), "rule__CubeLevel__Alternatives_6");
+					put(grammarAccess.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives(), "rule__XAnnotationElementValueOrCommaList__Alternatives");
+					put(grammarAccess.getXAnnotationElementValueAccess().getAlternatives(), "rule__XAnnotationElementValue__Alternatives");
+					put(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives(), "rule__XAnnotationOrExpression__Alternatives");
+					put(grammarAccess.getXAssignmentAccess().getAlternatives(), "rule__XAssignment__Alternatives");
+					put(grammarAccess.getOpMultiAssignAccess().getAlternatives(), "rule__OpMultiAssign__Alternatives");
+					put(grammarAccess.getOpEqualityAccess().getAlternatives(), "rule__OpEquality__Alternatives");
+					put(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1(), "rule__XRelationalExpression__Alternatives_1");
+					put(grammarAccess.getOpCompareAccess().getAlternatives(), "rule__OpCompare__Alternatives");
+					put(grammarAccess.getOpOtherAccess().getAlternatives(), "rule__OpOther__Alternatives");
+					put(grammarAccess.getOpOtherAccess().getAlternatives_5_1(), "rule__OpOther__Alternatives_5_1");
+					put(grammarAccess.getOpOtherAccess().getAlternatives_6_1(), "rule__OpOther__Alternatives_6_1");
+					put(grammarAccess.getOpAddAccess().getAlternatives(), "rule__OpAdd__Alternatives");
+					put(grammarAccess.getOpMultiAccess().getAlternatives(), "rule__OpMulti__Alternatives");
+					put(grammarAccess.getXUnaryOperationAccess().getAlternatives(), "rule__XUnaryOperation__Alternatives");
+					put(grammarAccess.getOpUnaryAccess().getAlternatives(), "rule__OpUnary__Alternatives");
+					put(grammarAccess.getOpPostfixAccess().getAlternatives(), "rule__OpPostfix__Alternatives");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1(), "rule__XMemberFeatureCall__Alternatives_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1(), "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1(), "rule__XMemberFeatureCall__Alternatives_1_1_3_1");
+					put(grammarAccess.getXPrimaryExpressionAccess().getAlternatives(), "rule__XPrimaryExpression__Alternatives");
+					put(grammarAccess.getXLiteralAccess().getAlternatives(), "rule__XLiteral__Alternatives");
+					put(grammarAccess.getXCollectionLiteralAccess().getAlternatives(), "rule__XCollectionLiteral__Alternatives");
+					put(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2(), "rule__XSwitchExpression__Alternatives_2");
+					put(grammarAccess.getXCasePartAccess().getAlternatives_3(), "rule__XCasePart__Alternatives_3");
+					put(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives(), "rule__XExpressionOrVarDeclaration__Alternatives");
+					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1(), "rule__XVariableDeclaration__Alternatives_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2(), "rule__XVariableDeclaration__Alternatives_2");
+					put(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1(), "rule__XFeatureCall__Alternatives_3_1");
+					put(grammarAccess.getFeatureCallIDAccess().getAlternatives(), "rule__FeatureCallID__Alternatives");
+					put(grammarAccess.getIdOrSuperAccess().getAlternatives(), "rule__IdOrSuper__Alternatives");
+					put(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1(), "rule__XConstructorCall__Alternatives_4_1");
+					put(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1(), "rule__XBooleanLiteral__Alternatives_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3(), "rule__XTryCatchFinallyExpression__Alternatives_3");
+					put(grammarAccess.getNumberAccess().getAlternatives(), "rule__Number__Alternatives");
+					put(grammarAccess.getNumberAccess().getAlternatives_1_0(), "rule__Number__Alternatives_1_0");
+					put(grammarAccess.getNumberAccess().getAlternatives_1_1_1(), "rule__Number__Alternatives_1_1_1");
+					put(grammarAccess.getJvmTypeReferenceAccess().getAlternatives(), "rule__JvmTypeReference__Alternatives");
+					put(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives(), "rule__JvmArgumentTypeReference__Alternatives");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2(), "rule__JvmWildcardTypeReference__Alternatives_2");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1(), "rule__XImportDeclaration__Alternatives_1");
+					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_1_0_3(), "rule__XImportDeclaration__Alternatives_1_0_3");
+					put(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives(), "rule__CubeAggregatorEnum__Alternatives");
+					put(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives(), "rule__CubeLevelPropType__Alternatives");
+					put(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives(), "rule__CubeLevelLevelType__Alternatives");
+					put(grammarAccess.getCubeModelAccess().getGroup(), "rule__CubeModel__Group__0");
+					put(grammarAccess.getCubePackageAccess().getGroup(), "rule__CubePackage__Group__0");
+					put(grammarAccess.getCubePackageAccess().getGroup_2(), "rule__CubePackage__Group_2__0");
+					put(grammarAccess.getCubeTypeAccess().getGroup(), "rule__CubeType__Group__0");
+					put(grammarAccess.getCubeTypeAccess().getGroup_2(), "rule__CubeType__Group_2__0");
+					put(grammarAccess.getCubeDimensionUsageAccess().getGroup(), "rule__CubeDimensionUsage__Group__0");
+					put(grammarAccess.getCubeDimensionAccess().getGroup(), "rule__CubeDimension__Group__0");
+					put(grammarAccess.getCubeHierarchyAccess().getGroup(), "rule__CubeHierarchy__Group__0");
+					put(grammarAccess.getCubeHierarchyAccess().getGroup_4(), "rule__CubeHierarchy__Group_4__0");
+					put(grammarAccess.getCubeHierarchyAccess().getGroup_5(), "rule__CubeHierarchy__Group_5__0");
+					put(grammarAccess.getCubeEntityAccess().getGroup(), "rule__CubeEntity__Group__0");
+					put(grammarAccess.getCubeEntityAccess().getGroup_2(), "rule__CubeEntity__Group_2__0");
+					put(grammarAccess.getCubeTypeEntityAccess().getGroup(), "rule__CubeTypeEntity__Group__0");
+					put(grammarAccess.getCubeDimensionEntityAccess().getGroup(), "rule__CubeDimensionEntity__Group__0");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup(), "rule__CubeDimensionEntityEntity__Group__0");
+					put(grammarAccess.getCubeLevelAccess().getGroup(), "rule__CubeLevel__Group__0");
+					put(grammarAccess.getCubeLevelAccess().getGroup_5(), "rule__CubeLevel__Group_5__0");
+					put(grammarAccess.getCubeLevelAccess().getGroup_6_1(), "rule__CubeLevel__Group_6_1__0");
+					put(grammarAccess.getCubeLevelPropAccess().getGroup(), "rule__CubeLevelProp__Group__0");
+					put(grammarAccess.getCubeLevelPropAccess().getGroup_4(), "rule__CubeLevelProp__Group_4__0");
+					put(grammarAccess.getCubeMeasureAccess().getGroup(), "rule__CubeMeasure__Group__0");
+					put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+					put(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup(), "rule__CubeQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup_1(), "rule__CubeQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
+					put(grammarAccess.getLFQNAccess().getGroup(), "rule__LFQN__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup_1(), "rule__LFQN__Group_1__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getNumberAccess().getGroup_1(), "rule__Number__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1_1(), "rule__Number__Group_1_1__0");
+					put(grammarAccess.getStaticQualifierAccess().getGroup(), "rule__StaticQualifier__Group__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0(), "rule__JvmTypeReference__Group_0__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1(), "rule__JvmTypeReference__Group_0_1__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0(), "rule__JvmTypeReference__Group_0_1_0__0");
+					put(grammarAccess.getArrayBracketsAccess().getGroup(), "rule__ArrayBrackets__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup(), "rule__XFunctionTypeRef__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0(), "rule__XFunctionTypeRef__Group_0__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1(), "rule__XFunctionTypeRef__Group_0_1__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1(), "rule__XFunctionTypeRef__Group_0_1_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup(), "rule__JvmParameterizedTypeReference__Group__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1(), "rule__JvmParameterizedTypeReference__Group_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2(), "rule__JvmParameterizedTypeReference__Group_1_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4(), "rule__JvmParameterizedTypeReference__Group_1_4__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup(), "rule__JvmWildcardTypeReference__Group__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0(), "rule__JvmWildcardTypeReference__Group_2_0__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1(), "rule__JvmWildcardTypeReference__Group_2_1__0");
+					put(grammarAccess.getJvmUpperBoundAccess().getGroup(), "rule__JvmUpperBound__Group__0");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getGroup(), "rule__JvmUpperBoundAnded__Group__0");
+					put(grammarAccess.getJvmLowerBoundAccess().getGroup(), "rule__JvmLowerBound__Group__0");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getGroup(), "rule__JvmLowerBoundAnded__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup(), "rule__JvmTypeParameter__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup_1(), "rule__JvmTypeParameter__Group_1__0");
+					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_1_0(), "rule__XImportDeclaration__Group_1_0__0");
+					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
+					put(grammarAccess.getCubeModelAccess().getPckgAssignment_1(), "rule__CubeModel__PckgAssignment_1");
+					put(grammarAccess.getCubePackageAccess().getNameAssignment_1(), "rule__CubePackage__NameAssignment_1");
+					put(grammarAccess.getCubePackageAccess().getImportsAssignment_2_1(), "rule__CubePackage__ImportsAssignment_2_1");
+					put(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_2(), "rule__CubePackage__DimensionsAssignment_2_2");
+					put(grammarAccess.getCubePackageAccess().getCubesAssignment_2_3(), "rule__CubePackage__CubesAssignment_2_3");
+					put(grammarAccess.getCubeTypeAccess().getNameAssignment_1(), "rule__CubeType__NameAssignment_1");
+					put(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0(), "rule__CubeType__DefaultMeasureAssignment_2_0");
+					put(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1(), "rule__CubeType__DefaultMeasureValueAssignment_2_1");
+					put(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4(), "rule__CubeType__CubeTypeEntityAssignment_4");
+					put(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1(), "rule__CubeDimensionUsage__SourceValueAssignment_1");
+					put(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3(), "rule__CubeDimensionUsage__OverValueAssignment_3");
+					put(grammarAccess.getCubeDimensionAccess().getNameAssignment_1(), "rule__CubeDimension__NameAssignment_1");
+					put(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2(), "rule__CubeDimension__TypeTimeAssignment_2");
+					put(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4(), "rule__CubeDimension__HierarchiesAssignment_4");
+					put(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2(), "rule__CubeHierarchy__NameAssignment_2");
+					put(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3(), "rule__CubeHierarchy__HasAllAssignment_3");
+					put(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0(), "rule__CubeHierarchy__AllMemberNameAssignment_4_0");
+					put(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1(), "rule__CubeHierarchy__AllMemberNameValueAssignment_4_1");
+					put(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0(), "rule__CubeHierarchy__DefaultMemberAssignment_5_0");
+					put(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1(), "rule__CubeHierarchy__DefaultMemberValueAssignment_5_1");
+					put(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7(), "rule__CubeHierarchy__CubeDimEntityAssignment_7");
+					put(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1(), "rule__CubeEntity__EntityValueAssignment_1");
+					put(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0(), "rule__CubeEntity__KeyAssignment_2_0");
+					put(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1(), "rule__CubeEntity__KeyValueAssignment_2_1");
+					put(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0(), "rule__CubeTypeEntity__EntityRefAssignment_0");
+					put(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2(), "rule__CubeTypeEntity__DimensionUsagesAssignment_2");
+					put(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3(), "rule__CubeTypeEntity__MeasuresAssignment_3");
+					put(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1(), "rule__CubeDimensionEntity__EntityRefAssignment_1");
+					put(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3(), "rule__CubeDimensionEntity__HierarchLevelsAssignment_3");
+					put(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4(), "rule__CubeDimensionEntity__DimEntityAssignment_4");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1(), "rule__CubeDimensionEntityEntity__EntityRefAssignment_1");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4(), "rule__CubeDimensionEntityEntity__OverValueAssignment_4");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_6(), "rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_6");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_7(), "rule__CubeDimensionEntityEntity__DimEntityAssignment_7");
+					put(grammarAccess.getCubeLevelAccess().getNameAssignment_1(), "rule__CubeLevel__NameAssignment_1");
+					put(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3(), "rule__CubeLevel__LevelColValueAssignment_3");
+					put(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4(), "rule__CubeLevel__UniqueMembersAssignment_4");
+					put(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0(), "rule__CubeLevel__LevelTypeAssignment_5_0");
+					put(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1(), "rule__CubeLevel__LevelTypeValueAssignment_5_1");
+					put(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1_1(), "rule__CubeLevel__PropertiesAssignment_6_1_1");
+					put(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1(), "rule__CubeLevelProp__NameAssignment_1");
+					put(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3(), "rule__CubeLevelProp__LevelPropColValueAssignment_3");
+					put(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0(), "rule__CubeLevelProp__TypeAssignment_4_0");
+					put(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1(), "rule__CubeLevelProp__TypeValueAssignment_4_1");
+					put(grammarAccess.getCubeMeasureAccess().getNameAssignment_1(), "rule__CubeMeasure__NameAssignment_1");
+					put(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2(), "rule__CubeMeasure__AggregatorAssignment_2");
+					put(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4(), "rule__CubeMeasure__MeasureColAssignment_4");
+					put(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5(), "rule__CubeMeasure__NotVisibleAssignment_5");
+					put(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1(), "rule__Import__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLParser typedParser = (org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLParser) parser;
+			typedParser.entryRuleCubeModel();
+			return typedParser.getFollowElements();
+		} catch(RecognitionException ex) {
+			throw new RuntimeException(ex);
+		}		
+	}
+	
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+	
+	public CubeDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/PartialCubeDSLContentAssistParser.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/PartialCubeDSLContentAssistParser.java
new file mode 100644
index 0000000..baa9ce1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/PartialCubeDSLContentAssistParser.java
@@ -0,0 +1,49 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+/**
+ * @author Sebastian Zarnekow - Initial contribution and API
+ */
+@SuppressWarnings("restriction")
+public class PartialCubeDSLContentAssistParser extends CubeDSLParser implements IPartialContentAssistParser {
+
+	private AbstractRule rule;
+
+	public void initializeFor(AbstractRule rule) {
+		this.rule = rule;
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		if (rule == null || rule.eIsProxy())
+			return Collections.emptyList();
+		String methodName = "entryRule" + rule.getName();
+		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
+			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+		dispatcher.invoke();
+		return parser.getFollowElements();
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g
new file mode 100644
index 0000000..0410eb0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g
@@ -0,0 +1,10015 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+grammar InternalCubeDSL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private CubeDSLGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleCubeModel
+entryRuleCubeModel 
+:
+{ before(grammarAccess.getCubeModelRule()); }
+	 ruleCubeModel
+{ after(grammarAccess.getCubeModelRule()); } 
+	 EOF 
+;
+
+// Rule CubeModel
+ruleCubeModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeModelAccess().getGroup()); }
+(rule__CubeModel__Group__0)
+{ after(grammarAccess.getCubeModelAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubePackage
+entryRuleCubePackage 
+:
+{ before(grammarAccess.getCubePackageRule()); }
+	 ruleCubePackage
+{ after(grammarAccess.getCubePackageRule()); } 
+	 EOF 
+;
+
+// Rule CubePackage
+ruleCubePackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubePackageAccess().getGroup()); }
+(rule__CubePackage__Group__0)
+{ after(grammarAccess.getCubePackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeType
+entryRuleCubeType 
+:
+{ before(grammarAccess.getCubeTypeRule()); }
+	 ruleCubeType
+{ after(grammarAccess.getCubeTypeRule()); } 
+	 EOF 
+;
+
+// Rule CubeType
+ruleCubeType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeTypeAccess().getGroup()); }
+(rule__CubeType__Group__0)
+{ after(grammarAccess.getCubeTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeDimensionUsage
+entryRuleCubeDimensionUsage 
+:
+{ before(grammarAccess.getCubeDimensionUsageRule()); }
+	 ruleCubeDimensionUsage
+{ after(grammarAccess.getCubeDimensionUsageRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimensionUsage
+ruleCubeDimensionUsage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeDimensionUsageAccess().getGroup()); }
+(rule__CubeDimensionUsage__Group__0)
+{ after(grammarAccess.getCubeDimensionUsageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeDimension
+entryRuleCubeDimension 
+:
+{ before(grammarAccess.getCubeDimensionRule()); }
+	 ruleCubeDimension
+{ after(grammarAccess.getCubeDimensionRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimension
+ruleCubeDimension
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeDimensionAccess().getGroup()); }
+(rule__CubeDimension__Group__0)
+{ after(grammarAccess.getCubeDimensionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeHierarchy
+entryRuleCubeHierarchy 
+:
+{ before(grammarAccess.getCubeHierarchyRule()); }
+	 ruleCubeHierarchy
+{ after(grammarAccess.getCubeHierarchyRule()); } 
+	 EOF 
+;
+
+// Rule CubeHierarchy
+ruleCubeHierarchy
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getGroup()); }
+(rule__CubeHierarchy__Group__0)
+{ after(grammarAccess.getCubeHierarchyAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeEntity
+entryRuleCubeEntity 
+:
+{ before(grammarAccess.getCubeEntityRule()); }
+	 ruleCubeEntity
+{ after(grammarAccess.getCubeEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeEntity
+ruleCubeEntity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeEntityAccess().getGroup()); }
+(rule__CubeEntity__Group__0)
+{ after(grammarAccess.getCubeEntityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeTypeEntity
+entryRuleCubeTypeEntity 
+:
+{ before(grammarAccess.getCubeTypeEntityRule()); }
+	 ruleCubeTypeEntity
+{ after(grammarAccess.getCubeTypeEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeTypeEntity
+ruleCubeTypeEntity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeTypeEntityAccess().getGroup()); }
+(rule__CubeTypeEntity__Group__0)
+{ after(grammarAccess.getCubeTypeEntityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeDimensionEntity
+entryRuleCubeDimensionEntity 
+:
+{ before(grammarAccess.getCubeDimensionEntityRule()); }
+	 ruleCubeDimensionEntity
+{ after(grammarAccess.getCubeDimensionEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimensionEntity
+ruleCubeDimensionEntity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeDimensionEntityAccess().getGroup()); }
+(rule__CubeDimensionEntity__Group__0)
+{ after(grammarAccess.getCubeDimensionEntityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeDimensionEntityEntity
+entryRuleCubeDimensionEntityEntity 
+:
+{ before(grammarAccess.getCubeDimensionEntityEntityRule()); }
+	 ruleCubeDimensionEntityEntity
+{ after(grammarAccess.getCubeDimensionEntityEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimensionEntityEntity
+ruleCubeDimensionEntityEntity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); }
+(rule__CubeDimensionEntityEntity__Group__0)
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeLevel
+entryRuleCubeLevel 
+:
+{ before(grammarAccess.getCubeLevelRule()); }
+	 ruleCubeLevel
+{ after(grammarAccess.getCubeLevelRule()); } 
+	 EOF 
+;
+
+// Rule CubeLevel
+ruleCubeLevel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeLevelAccess().getGroup()); }
+(rule__CubeLevel__Group__0)
+{ after(grammarAccess.getCubeLevelAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeLevelProp
+entryRuleCubeLevelProp 
+:
+{ before(grammarAccess.getCubeLevelPropRule()); }
+	 ruleCubeLevelProp
+{ after(grammarAccess.getCubeLevelPropRule()); } 
+	 EOF 
+;
+
+// Rule CubeLevelProp
+ruleCubeLevelProp
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getGroup()); }
+(rule__CubeLevelProp__Group__0)
+{ after(grammarAccess.getCubeLevelPropAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeMeasure
+entryRuleCubeMeasure 
+:
+{ before(grammarAccess.getCubeMeasureRule()); }
+	 ruleCubeMeasure
+{ after(grammarAccess.getCubeMeasureRule()); } 
+	 EOF 
+;
+
+// Rule CubeMeasure
+ruleCubeMeasure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getGroup()); }
+(rule__CubeMeasure__Group__0)
+{ after(grammarAccess.getCubeMeasureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport 
+:
+{ before(grammarAccess.getImportRule()); }
+	 ruleImport
+{ after(grammarAccess.getImportRule()); } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleCubeQualifiedNameWithWildCard
+entryRuleCubeQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getCubeQualifiedNameWithWildCardRule()); }
+	 ruleCubeQualifiedNameWithWildCard
+{ after(grammarAccess.getCubeQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule CubeQualifiedNameWithWildCard
+ruleCubeQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__CubeQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName 
+:
+{ before(grammarAccess.getQualifiedNameRule()); }
+	 ruleQualifiedName
+{ after(grammarAccess.getQualifiedNameRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedName
+ruleQualifiedName
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getQualifiedNameAccess().getGroup()); }
+(rule__QualifiedName__Group__0)
+{ after(grammarAccess.getQualifiedNameAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleValidID
+entryRuleValidID 
+:
+{ before(grammarAccess.getValidIDRule()); }
+	 ruleValidID
+{ after(grammarAccess.getValidIDRule()); } 
+	 EOF 
+;
+
+// Rule ValidID
+ruleValidID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+	RULE_ID
+{ after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN 
+:
+{ before(grammarAccess.getLFQNRule()); }
+	 ruleLFQN
+{ after(grammarAccess.getLFQNRule()); } 
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLFQNAccess().getGroup()); }
+(rule__LFQN__Group__0)
+{ after(grammarAccess.getLFQNAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTRANSLATABLEID
+entryRuleTRANSLATABLEID 
+:
+{ before(grammarAccess.getTRANSLATABLEIDRule()); }
+	 ruleTRANSLATABLEID
+{ after(grammarAccess.getTRANSLATABLEIDRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+	RULE_ID
+{ after(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTRANSLATABLESTRING
+entryRuleTRANSLATABLESTRING 
+:
+{ before(grammarAccess.getTRANSLATABLESTRINGRule()); }
+	 ruleTRANSLATABLESTRING
+{ after(grammarAccess.getTRANSLATABLESTRINGRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLESTRING
+ruleTRANSLATABLESTRING
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+	RULE_STRING
+{ after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation 
+:
+{ before(grammarAccess.getXAnnotationRule()); }
+	 ruleXAnnotation
+{ after(grammarAccess.getXAnnotationRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationAccess().getGroup()); }
+(rule__XAnnotation__Group__0)
+{ after(grammarAccess.getXAnnotationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair 
+:
+{ before(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 ruleXAnnotationElementValuePair
+{ after(grammarAccess.getXAnnotationElementValuePairRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+(rule__XAnnotationElementValuePair__Group__0)
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList 
+:
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 ruleXAnnotationElementValueOrCommaList
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+(rule__XAnnotationElementValueOrCommaList__Alternatives)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue 
+:
+{ before(grammarAccess.getXAnnotationElementValueRule()); }
+	 ruleXAnnotationElementValue
+{ after(grammarAccess.getXAnnotationElementValueRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+(rule__XAnnotationElementValue__Alternatives)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression 
+:
+{ before(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+(rule__XAnnotationOrExpression__Alternatives)
+{ after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression 
+:
+{ before(grammarAccess.getXExpressionRule()); }
+	 ruleXExpression
+{ after(grammarAccess.getXExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+	ruleXAssignment
+{ after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment 
+:
+{ before(grammarAccess.getXAssignmentRule()); }
+	 ruleXAssignment
+{ after(grammarAccess.getXAssignmentRule()); } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+(rule__XAssignment__Alternatives)
+{ after(grammarAccess.getXAssignmentAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign 
+:
+{ before(grammarAccess.getOpSingleAssignRule()); }
+	 ruleOpSingleAssign
+{ after(grammarAccess.getOpSingleAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+
+	'=' 
+
+{ after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign 
+:
+{ before(grammarAccess.getOpMultiAssignRule()); }
+	 ruleOpMultiAssign
+{ after(grammarAccess.getOpMultiAssignRule()); } 
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+(rule__OpMultiAssign__Alternatives)
+{ after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression 
+:
+{ before(grammarAccess.getXOrExpressionRule()); }
+	 ruleXOrExpression
+{ after(grammarAccess.getXOrExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getGroup()); }
+(rule__XOrExpression__Group__0)
+{ after(grammarAccess.getXOrExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr 
+:
+{ before(grammarAccess.getOpOrRule()); }
+	 ruleOpOr
+{ after(grammarAccess.getOpOrRule()); } 
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+
+	'||' 
+
+{ after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression 
+:
+{ before(grammarAccess.getXAndExpressionRule()); }
+	 ruleXAndExpression
+{ after(grammarAccess.getXAndExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAndExpressionAccess().getGroup()); }
+(rule__XAndExpression__Group__0)
+{ after(grammarAccess.getXAndExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd 
+:
+{ before(grammarAccess.getOpAndRule()); }
+	 ruleOpAnd
+{ after(grammarAccess.getOpAndRule()); } 
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+
+	'&&' 
+
+{ after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression 
+:
+{ before(grammarAccess.getXEqualityExpressionRule()); }
+	 ruleXEqualityExpression
+{ after(grammarAccess.getXEqualityExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+(rule__XEqualityExpression__Group__0)
+{ after(grammarAccess.getXEqualityExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality 
+:
+{ before(grammarAccess.getOpEqualityRule()); }
+	 ruleOpEquality
+{ after(grammarAccess.getOpEqualityRule()); } 
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+(rule__OpEquality__Alternatives)
+{ after(grammarAccess.getOpEqualityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression 
+:
+{ before(grammarAccess.getXRelationalExpressionRule()); }
+	 ruleXRelationalExpression
+{ after(grammarAccess.getXRelationalExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+(rule__XRelationalExpression__Group__0)
+{ after(grammarAccess.getXRelationalExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare 
+:
+{ before(grammarAccess.getOpCompareRule()); }
+	 ruleOpCompare
+{ after(grammarAccess.getOpCompareRule()); } 
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpCompareAccess().getAlternatives()); }
+(rule__OpCompare__Alternatives)
+{ after(grammarAccess.getOpCompareAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression 
+:
+{ before(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 ruleXOtherOperatorExpression
+{ after(grammarAccess.getXOtherOperatorExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+(rule__XOtherOperatorExpression__Group__0)
+{ after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther 
+:
+{ before(grammarAccess.getOpOtherRule()); }
+	 ruleOpOther
+{ after(grammarAccess.getOpOtherRule()); } 
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpOtherAccess().getAlternatives()); }
+(rule__OpOther__Alternatives)
+{ after(grammarAccess.getOpOtherAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression 
+:
+{ before(grammarAccess.getXAdditiveExpressionRule()); }
+	 ruleXAdditiveExpression
+{ after(grammarAccess.getXAdditiveExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+(rule__XAdditiveExpression__Group__0)
+{ after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd 
+:
+{ before(grammarAccess.getOpAddRule()); }
+	 ruleOpAdd
+{ after(grammarAccess.getOpAddRule()); } 
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpAddAccess().getAlternatives()); }
+(rule__OpAdd__Alternatives)
+{ after(grammarAccess.getOpAddAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression 
+:
+{ before(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 ruleXMultiplicativeExpression
+{ after(grammarAccess.getXMultiplicativeExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+(rule__XMultiplicativeExpression__Group__0)
+{ after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti 
+:
+{ before(grammarAccess.getOpMultiRule()); }
+	 ruleOpMulti
+{ after(grammarAccess.getOpMultiRule()); } 
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpMultiAccess().getAlternatives()); }
+(rule__OpMulti__Alternatives)
+{ after(grammarAccess.getOpMultiAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation 
+:
+{ before(grammarAccess.getXUnaryOperationRule()); }
+	 ruleXUnaryOperation
+{ after(grammarAccess.getXUnaryOperationRule()); } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+(rule__XUnaryOperation__Alternatives)
+{ after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary 
+:
+{ before(grammarAccess.getOpUnaryRule()); }
+	 ruleOpUnary
+{ after(grammarAccess.getOpUnaryRule()); } 
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+(rule__OpUnary__Alternatives)
+{ after(grammarAccess.getOpUnaryAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression 
+:
+{ before(grammarAccess.getXCastedExpressionRule()); }
+	 ruleXCastedExpression
+{ after(grammarAccess.getXCastedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+(rule__XCastedExpression__Group__0)
+{ after(grammarAccess.getXCastedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation 
+:
+{ before(grammarAccess.getXPostfixOperationRule()); }
+	 ruleXPostfixOperation
+{ after(grammarAccess.getXPostfixOperationRule()); } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+(rule__XPostfixOperation__Group__0)
+{ after(grammarAccess.getXPostfixOperationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix 
+:
+{ before(grammarAccess.getOpPostfixRule()); }
+	 ruleOpPostfix
+{ after(grammarAccess.getOpPostfixRule()); } 
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+(rule__OpPostfix__Alternatives)
+{ after(grammarAccess.getOpPostfixAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall 
+:
+{ before(grammarAccess.getXMemberFeatureCallRule()); }
+	 ruleXMemberFeatureCall
+{ after(grammarAccess.getXMemberFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+(rule__XMemberFeatureCall__Group__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression 
+:
+{ before(grammarAccess.getXPrimaryExpressionRule()); }
+	 ruleXPrimaryExpression
+{ after(grammarAccess.getXPrimaryExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+(rule__XPrimaryExpression__Alternatives)
+{ after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral 
+:
+{ before(grammarAccess.getXLiteralRule()); }
+	 ruleXLiteral
+{ after(grammarAccess.getXLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXLiteralAccess().getAlternatives()); }
+(rule__XLiteral__Alternatives)
+{ after(grammarAccess.getXLiteralAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral 
+:
+{ before(grammarAccess.getXCollectionLiteralRule()); }
+	 ruleXCollectionLiteral
+{ after(grammarAccess.getXCollectionLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+(rule__XCollectionLiteral__Alternatives)
+{ after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral 
+:
+{ before(grammarAccess.getXSetLiteralRule()); }
+	 ruleXSetLiteral
+{ after(grammarAccess.getXSetLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSetLiteralAccess().getGroup()); }
+(rule__XSetLiteral__Group__0)
+{ after(grammarAccess.getXSetLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral 
+:
+{ before(grammarAccess.getXListLiteralRule()); }
+	 ruleXListLiteral
+{ after(grammarAccess.getXListLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXListLiteralAccess().getGroup()); }
+(rule__XListLiteral__Group__0)
+{ after(grammarAccess.getXListLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure 
+:
+{ before(grammarAccess.getXClosureRule()); }
+	 ruleXClosure
+{ after(grammarAccess.getXClosureRule()); } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXClosureAccess().getGroup()); }
+(rule__XClosure__Group__0)
+{ after(grammarAccess.getXClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure 
+:
+{ before(grammarAccess.getXExpressionInClosureRule()); }
+	 ruleXExpressionInClosure
+{ after(grammarAccess.getXExpressionInClosureRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+(rule__XExpressionInClosure__Group__0)
+{ after(grammarAccess.getXExpressionInClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure 
+:
+{ before(grammarAccess.getXShortClosureRule()); }
+	 ruleXShortClosure
+{ after(grammarAccess.getXShortClosureRule()); } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXShortClosureAccess().getGroup()); }
+(rule__XShortClosure__Group__0)
+{ after(grammarAccess.getXShortClosureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression 
+:
+{ before(grammarAccess.getXParenthesizedExpressionRule()); }
+	 ruleXParenthesizedExpression
+{ after(grammarAccess.getXParenthesizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+(rule__XParenthesizedExpression__Group__0)
+{ after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression 
+:
+{ before(grammarAccess.getXIfExpressionRule()); }
+	 ruleXIfExpression
+{ after(grammarAccess.getXIfExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXIfExpressionAccess().getGroup()); }
+(rule__XIfExpression__Group__0)
+{ after(grammarAccess.getXIfExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression 
+:
+{ before(grammarAccess.getXSwitchExpressionRule()); }
+	 ruleXSwitchExpression
+{ after(grammarAccess.getXSwitchExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+(rule__XSwitchExpression__Group__0)
+{ after(grammarAccess.getXSwitchExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart 
+:
+{ before(grammarAccess.getXCasePartRule()); }
+	 ruleXCasePart
+{ after(grammarAccess.getXCasePartRule()); } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCasePartAccess().getGroup()); }
+(rule__XCasePart__Group__0)
+{ after(grammarAccess.getXCasePartAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression 
+:
+{ before(grammarAccess.getXForLoopExpressionRule()); }
+	 ruleXForLoopExpression
+{ after(grammarAccess.getXForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+(rule__XForLoopExpression__Group__0)
+{ after(grammarAccess.getXForLoopExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression 
+:
+{ before(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 ruleXBasicForLoopExpression
+{ after(grammarAccess.getXBasicForLoopExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+(rule__XBasicForLoopExpression__Group__0)
+{ after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression 
+:
+{ before(grammarAccess.getXWhileExpressionRule()); }
+	 ruleXWhileExpression
+{ after(grammarAccess.getXWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+(rule__XWhileExpression__Group__0)
+{ after(grammarAccess.getXWhileExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression 
+:
+{ before(grammarAccess.getXDoWhileExpressionRule()); }
+	 ruleXDoWhileExpression
+{ after(grammarAccess.getXDoWhileExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+(rule__XDoWhileExpression__Group__0)
+{ after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression 
+:
+{ before(grammarAccess.getXBlockExpressionRule()); }
+	 ruleXBlockExpression
+{ after(grammarAccess.getXBlockExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+(rule__XBlockExpression__Group__0)
+{ after(grammarAccess.getXBlockExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration 
+:
+{ before(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 ruleXExpressionOrVarDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+(rule__XExpressionOrVarDeclaration__Alternatives)
+{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration 
+:
+{ before(grammarAccess.getXVariableDeclarationRule()); }
+	 ruleXVariableDeclaration
+{ after(grammarAccess.getXVariableDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+(rule__XVariableDeclaration__Group__0)
+{ after(grammarAccess.getXVariableDeclarationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter 
+:
+{ before(grammarAccess.getJvmFormalParameterRule()); }
+	 ruleJvmFormalParameter
+{ after(grammarAccess.getJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+(rule__JvmFormalParameter__Group__0)
+{ after(grammarAccess.getJvmFormalParameterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter 
+:
+{ before(grammarAccess.getFullJvmFormalParameterRule()); }
+	 ruleFullJvmFormalParameter
+{ after(grammarAccess.getFullJvmFormalParameterRule()); } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+(rule__FullJvmFormalParameter__Group__0)
+{ after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall 
+:
+{ before(grammarAccess.getXFeatureCallRule()); }
+	 ruleXFeatureCall
+{ after(grammarAccess.getXFeatureCallRule()); } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXFeatureCallAccess().getGroup()); }
+(rule__XFeatureCall__Group__0)
+{ after(grammarAccess.getXFeatureCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID 
+:
+{ before(grammarAccess.getFeatureCallIDRule()); }
+	 ruleFeatureCallID
+{ after(grammarAccess.getFeatureCallIDRule()); } 
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+(rule__FeatureCallID__Alternatives)
+{ after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper 
+:
+{ before(grammarAccess.getIdOrSuperRule()); }
+	 ruleIdOrSuper
+{ after(grammarAccess.getIdOrSuperRule()); } 
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+(rule__IdOrSuper__Alternatives)
+{ after(grammarAccess.getIdOrSuperAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall 
+:
+{ before(grammarAccess.getXConstructorCallRule()); }
+	 ruleXConstructorCall
+{ after(grammarAccess.getXConstructorCallRule()); } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXConstructorCallAccess().getGroup()); }
+(rule__XConstructorCall__Group__0)
+{ after(grammarAccess.getXConstructorCallAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral 
+:
+{ before(grammarAccess.getXBooleanLiteralRule()); }
+	 ruleXBooleanLiteral
+{ after(grammarAccess.getXBooleanLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+(rule__XBooleanLiteral__Group__0)
+{ after(grammarAccess.getXBooleanLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral 
+:
+{ before(grammarAccess.getXNullLiteralRule()); }
+	 ruleXNullLiteral
+{ after(grammarAccess.getXNullLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXNullLiteralAccess().getGroup()); }
+(rule__XNullLiteral__Group__0)
+{ after(grammarAccess.getXNullLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral 
+:
+{ before(grammarAccess.getXNumberLiteralRule()); }
+	 ruleXNumberLiteral
+{ after(grammarAccess.getXNumberLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+(rule__XNumberLiteral__Group__0)
+{ after(grammarAccess.getXNumberLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral 
+:
+{ before(grammarAccess.getXStringLiteralRule()); }
+	 ruleXStringLiteral
+{ after(grammarAccess.getXStringLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXStringLiteralAccess().getGroup()); }
+(rule__XStringLiteral__Group__0)
+{ after(grammarAccess.getXStringLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral 
+:
+{ before(grammarAccess.getXTypeLiteralRule()); }
+	 ruleXTypeLiteral
+{ after(grammarAccess.getXTypeLiteralRule()); } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+(rule__XTypeLiteral__Group__0)
+{ after(grammarAccess.getXTypeLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression 
+:
+{ before(grammarAccess.getXThrowExpressionRule()); }
+	 ruleXThrowExpression
+{ after(grammarAccess.getXThrowExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+(rule__XThrowExpression__Group__0)
+{ after(grammarAccess.getXThrowExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression 
+:
+{ before(grammarAccess.getXReturnExpressionRule()); }
+	 ruleXReturnExpression
+{ after(grammarAccess.getXReturnExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+(rule__XReturnExpression__Group__0)
+{ after(grammarAccess.getXReturnExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression 
+:
+{ before(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXTryCatchFinallyExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+(rule__XTryCatchFinallyExpression__Group__0)
+{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression 
+:
+{ before(grammarAccess.getXSynchronizedExpressionRule()); }
+	 ruleXSynchronizedExpression
+{ after(grammarAccess.getXSynchronizedExpressionRule()); } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+(rule__XSynchronizedExpression__Group__0)
+{ after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause 
+:
+{ before(grammarAccess.getXCatchClauseRule()); }
+	 ruleXCatchClause
+{ after(grammarAccess.getXCatchClauseRule()); } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXCatchClauseAccess().getGroup()); }
+(rule__XCatchClause__Group__0)
+{ after(grammarAccess.getXCatchClauseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleNumber
+entryRuleNumber 
+@init {
+	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+}
+:
+{ before(grammarAccess.getNumberRule()); }
+	 ruleNumber
+{ after(grammarAccess.getNumberRule()); } 
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber
+    @init {
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getNumberAccess().getAlternatives()); }
+(rule__Number__Alternatives)
+{ after(grammarAccess.getNumberAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+	myHiddenTokenState.restore();
+}
+
+
+
+
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference 
+:
+{ before(grammarAccess.getJvmTypeReferenceRule()); }
+	 ruleJvmTypeReference
+{ after(grammarAccess.getJvmTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+(rule__JvmTypeReference__Alternatives)
+{ after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets 
+:
+{ before(grammarAccess.getArrayBracketsRule()); }
+	 ruleArrayBrackets
+{ after(grammarAccess.getArrayBracketsRule()); } 
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getArrayBracketsAccess().getGroup()); }
+(rule__ArrayBrackets__Group__0)
+{ after(grammarAccess.getArrayBracketsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef 
+:
+{ before(grammarAccess.getXFunctionTypeRefRule()); }
+	 ruleXFunctionTypeRef
+{ after(grammarAccess.getXFunctionTypeRefRule()); } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+(rule__XFunctionTypeRef__Group__0)
+{ after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference 
+:
+{ before(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 ruleJvmParameterizedTypeReference
+{ after(grammarAccess.getJvmParameterizedTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+(rule__JvmParameterizedTypeReference__Group__0)
+{ after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference 
+:
+{ before(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 ruleJvmArgumentTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+(rule__JvmArgumentTypeReference__Alternatives)
+{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference 
+:
+{ before(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 ruleJvmWildcardTypeReference
+{ after(grammarAccess.getJvmWildcardTypeReferenceRule()); } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+(rule__JvmWildcardTypeReference__Group__0)
+{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound 
+:
+{ before(grammarAccess.getJvmUpperBoundRule()); }
+	 ruleJvmUpperBound
+{ after(grammarAccess.getJvmUpperBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+(rule__JvmUpperBound__Group__0)
+{ after(grammarAccess.getJvmUpperBoundAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded 
+:
+{ before(grammarAccess.getJvmUpperBoundAndedRule()); }
+	 ruleJvmUpperBoundAnded
+{ after(grammarAccess.getJvmUpperBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+(rule__JvmUpperBoundAnded__Group__0)
+{ after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound 
+:
+{ before(grammarAccess.getJvmLowerBoundRule()); }
+	 ruleJvmLowerBound
+{ after(grammarAccess.getJvmLowerBoundRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+(rule__JvmLowerBound__Group__0)
+{ after(grammarAccess.getJvmLowerBoundAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded 
+:
+{ before(grammarAccess.getJvmLowerBoundAndedRule()); }
+	 ruleJvmLowerBoundAnded
+{ after(grammarAccess.getJvmLowerBoundAndedRule()); } 
+	 EOF 
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+(rule__JvmLowerBoundAnded__Group__0)
+{ after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard 
+:
+{ before(grammarAccess.getQualifiedNameWithWildcardRule()); }
+	 ruleQualifiedNameWithWildcard
+{ after(grammarAccess.getQualifiedNameWithWildcardRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+(rule__QualifiedNameWithWildcard__Group__0)
+{ after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration 
+:
+{ before(grammarAccess.getXImportDeclarationRule()); }
+	 ruleXImportDeclaration
+{ after(grammarAccess.getXImportDeclarationRule()); } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+(rule__XImportDeclaration__Group__0)
+{ after(grammarAccess.getXImportDeclarationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport 
+:
+{ before(grammarAccess.getQualifiedNameInStaticImportRule()); }
+	 ruleQualifiedNameInStaticImport
+{ after(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+(rule__QualifiedNameInStaticImport__Group__0)
+{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+)
+(
+{ before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+(rule__QualifiedNameInStaticImport__Group__0)*
+{ after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+// Rule CubeAggregatorEnum
+ruleCubeAggregatorEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); }
+(rule__CubeAggregatorEnum__Alternatives)
+{ after(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule CubeLevelPropType
+ruleCubeLevelPropType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); }
+(rule__CubeLevelPropType__Alternatives)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule CubeLevelLevelType
+ruleCubeLevelLevelType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); }
+(rule__CubeLevelLevelType__Alternatives)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__CubeLevel__Alternatives_6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0()); }
+
+	';' 
+
+{ after(grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelAccess().getGroup_6_1()); }
+(rule__CubeLevel__Group_6_1__0)
+{ after(grammarAccess.getCubeLevelAccess().getGroup_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Alternatives_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+(rule__XAnnotation__Group_3_1_0__0)
+{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+(rule__XAnnotation__ValueAssignment_3_1_1)
+{ after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+(rule__XAnnotationElementValueOrCommaList__Group_0__0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+(rule__XAnnotationElementValueOrCommaList__Group_1__0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+(rule__XAnnotationElementValue__Group_0__0)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+	ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationOrExpression__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+	ruleXAnnotation
+{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+	ruleXExpression
+{ after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+(rule__XAssignment__Group_0__0)
+{ after(grammarAccess.getXAssignmentAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+(rule__XAssignment__Group_1__0)
+{ after(grammarAccess.getXAssignmentAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+
+	'+=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+
+	'-=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+
+	'*=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+
+	'/=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+
+	'%=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+(rule__OpMultiAssign__Group_5__0)
+{ after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+(rule__OpMultiAssign__Group_6__0)
+{ after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpEquality__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+
+	'==' 
+
+{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+
+	'!=' 
+
+{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+
+	'===' 
+
+{ after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+
+	'!==' 
+
+{ after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XRelationalExpression__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+(rule__XRelationalExpression__Group_1_0__0)
+{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+(rule__XRelationalExpression__Group_1_1__0)
+{ after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpCompare__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+
+	'>=' 
+
+{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpCompareAccess().getGroup_1()); }
+(rule__OpCompare__Group_1__0)
+{ after(grammarAccess.getOpCompareAccess().getGroup_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+
+	'>' 
+
+{ after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+
+	'<' 
+
+{ after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+
+	'->' 
+
+{ after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+
+	'..<' 
+
+{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGroup_2()); }
+(rule__OpOther__Group_2__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+
+	'..' 
+
+{ after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+
+	'=>' 
+
+{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGroup_5()); }
+(rule__OpOther__Group_5__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGroup_6()); }
+(rule__OpOther__Group_6__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_6()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+
+	'<>' 
+
+{ after(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+
+	'?:' 
+
+{ after(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+(rule__OpOther__Group_5_1_0__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+
+	'>' 
+
+{ after(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpOther__Alternatives_6_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+(rule__OpOther__Group_6_1_0__0)
+{ after(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+
+	'<' 
+
+{ after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+
+	'=>' 
+
+{ after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpAdd__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMulti__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+
+	'*' 
+
+{ after(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+
+	'**' 
+
+{ after(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+
+	'/' 
+
+{ after(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+
+	'%' 
+
+{ after(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XUnaryOperation__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+(rule__XUnaryOperation__Group_0__0)
+{ after(grammarAccess.getXUnaryOperationAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+	ruleXCastedExpression
+{ after(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpUnary__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+
+	'!' 
+
+{ after(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+
+	'+' 
+
+{ after(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpPostfix__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+
+	'++' 
+
+{ after(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+
+	'--' 
+
+{ after(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+(rule__XMemberFeatureCall__Group_1_0__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+(rule__XMemberFeatureCall__Group_1_1__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+(rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+(rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XMemberFeatureCall__Alternatives_1_1_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+(rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+(rule__XMemberFeatureCall__Group_1_1_3_1_1__0)
+{ after(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XPrimaryExpression__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+	ruleXConstructorCall
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+	ruleXBlockExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+	ruleXSwitchExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+(	ruleXSynchronizedExpression)
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+	ruleXFeatureCall
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+	ruleXLiteral
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+	ruleXIfExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+(	ruleXForLoopExpression)
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+	ruleXBasicForLoopExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+	ruleXWhileExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+	ruleXDoWhileExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+	ruleXThrowExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+	ruleXReturnExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+	ruleXTryCatchFinallyExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); }
+)
+
+    |(
+{ before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+	ruleXParenthesizedExpression
+{ after(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XLiteral__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+	ruleXCollectionLiteral
+{ after(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+(	ruleXClosure)
+{ after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+	ruleXBooleanLiteral
+{ after(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+	ruleXNumberLiteral
+{ after(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+	ruleXNullLiteral
+{ after(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+	ruleXStringLiteral
+{ after(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+	ruleXTypeLiteral
+{ after(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCollectionLiteral__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+	ruleXSetLiteral
+{ after(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+	ruleXListLiteral
+{ after(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XSwitchExpression__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+(rule__XSwitchExpression__Group_2_0__0)
+{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+(rule__XSwitchExpression__Group_2_1__0)
+{ after(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XCasePart__Alternatives_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+(rule__XCasePart__Group_3_0__0)
+{ after(grammarAccess.getXCasePartAccess().getGroup_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+(rule__XCasePart__FallThroughAssignment_3_1)
+{ after(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XExpressionOrVarDeclaration__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+	ruleXVariableDeclaration
+{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+	ruleXExpression
+{ after(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+(rule__XVariableDeclaration__WriteableAssignment_1_0)
+{ after(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+
+	'val' 
+
+{ after(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XVariableDeclaration__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+(rule__XVariableDeclaration__Group_2_0__0)
+{ after(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+(rule__XVariableDeclaration__NameAssignment_2_1)
+{ after(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XFeatureCall__Alternatives_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+(rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0)
+{ after(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+(rule__XFeatureCall__Group_3_1_1__0)
+{ after(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__FeatureCallID__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+	ruleValidID
+{ after(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+
+	'extends' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+
+	'static' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+
+	'import' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+
+	'extension' 
+
+{ after(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__IdOrSuper__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+	ruleFeatureCallID
+{ after(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+
+	'super' 
+
+{ after(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XConstructorCall__Alternatives_4_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+(rule__XConstructorCall__ArgumentsAssignment_4_1_0)
+{ after(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+(rule__XConstructorCall__Group_4_1_1__0)
+{ after(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XBooleanLiteral__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+
+	'false' 
+
+{ after(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+(rule__XBooleanLiteral__IsTrueAssignment_1_1)
+{ after(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XTryCatchFinallyExpression__Alternatives_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+(rule__XTryCatchFinallyExpression__Group_3_0__0)
+{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+(rule__XTryCatchFinallyExpression__Group_3_1__0)
+{ after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+	RULE_HEX
+{ after(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNumberAccess().getGroup_1()); }
+(rule__Number__Group_1__0)
+{ after(grammarAccess.getNumberAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+	RULE_INT
+{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+	RULE_DECIMAL
+{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Number__Alternatives_1_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+	RULE_INT
+{ after(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+	RULE_DECIMAL
+{ after(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmTypeReference__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+(rule__JvmTypeReference__Group_0__0)
+{ after(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+	ruleXFunctionTypeRef
+{ after(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmArgumentTypeReference__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+	ruleJvmTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+	ruleJvmWildcardTypeReference
+{ after(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__JvmWildcardTypeReference__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+(rule__JvmWildcardTypeReference__Group_2_0__0)
+{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+(rule__JvmWildcardTypeReference__Group_2_1__0)
+{ after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXImportDeclarationAccess().getGroup_1_0()); }
+(rule__XImportDeclaration__Group_1_0__0)
+{ after(grammarAccess.getXImportDeclarationAccess().getGroup_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1()); }
+(rule__XImportDeclaration__ImportedTypeAssignment_1_1)
+{ after(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2()); }
+(rule__XImportDeclaration__ImportedNamespaceAssignment_1_2)
+{ after(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XImportDeclaration__Alternatives_1_0_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0()); }
+(rule__XImportDeclaration__WildcardAssignment_1_0_3_0)
+{ after(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1()); }
+(rule__XImportDeclaration__MemberNameAssignment_1_0_3_1)
+{ after(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeAggregatorEnum__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); }
+(	'sum' 
+)
+{ after(grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); }
+(	'count' 
+)
+{ after(grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); }
+(	'min' 
+)
+{ after(grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); }
+(	'max' 
+)
+{ after(grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); }
+(	'avg' 
+)
+{ after(grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); }
+(	'distinct-count' 
+)
+{ after(grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelPropType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); }
+(	'String' 
+)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); }
+(	'Numeric' 
+)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); }
+(	'Integer' 
+)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); }
+(	'Boolean' 
+)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); }
+(	'Date' 
+)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); }
+(	'Time' 
+)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); }
+(	'Timestamp' 
+)
+{ after(grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelLevelType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); }
+(	'Time' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); }
+(	'TimeYears' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); }
+(	'TimeHalfYears' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); }
+(	'TimeQuarters' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); }
+(	'TimeMonths' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); }
+(	'TimeWeeks' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); }
+(	'TimeDays' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); }
+(	'TimeHours' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); }
+(	'TimeMinutes' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); }
+)
+
+    |(
+{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); }
+(	'TimeSeconds' 
+)
+{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__CubeModel__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeModel__Group__0__Impl
+	rule__CubeModel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeModelAccess().getCubeModelAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCubeModelAccess().getCubeModelAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeModel__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeModel__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeModelAccess().getPckgAssignment_1()); }
+(rule__CubeModel__PckgAssignment_1)
+{ after(grammarAccess.getCubeModelAccess().getPckgAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubePackage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group__0__Impl
+	rule__CubePackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getPackageKeyword_0()); }
+
+	'package' 
+
+{ after(grammarAccess.getCubePackageAccess().getPackageKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group__1__Impl
+	rule__CubePackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getNameAssignment_1()); }
+(rule__CubePackage__NameAssignment_1)
+{ after(grammarAccess.getCubePackageAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getGroup_2()); }
+(rule__CubePackage__Group_2__0)?
+{ after(grammarAccess.getCubePackageAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CubePackage__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group_2__0__Impl
+	rule__CubePackage__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group_2__1__Impl
+	rule__CubePackage__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getImportsAssignment_2_1()); }
+(rule__CubePackage__ImportsAssignment_2_1)*
+{ after(grammarAccess.getCubePackageAccess().getImportsAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group_2__2__Impl
+	rule__CubePackage__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_2()); }
+(rule__CubePackage__DimensionsAssignment_2_2)*
+{ after(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group_2__3__Impl
+	rule__CubePackage__Group_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getCubesAssignment_2_3()); }
+(rule__CubePackage__CubesAssignment_2_3)*
+{ after(grammarAccess.getCubePackageAccess().getCubesAssignment_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubePackage__Group_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeType__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group__0__Impl
+	rule__CubeType__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getCubeKeyword_0()); }
+
+	'cube' 
+
+{ after(grammarAccess.getCubeTypeAccess().getCubeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group__1__Impl
+	rule__CubeType__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getNameAssignment_1()); }
+(rule__CubeType__NameAssignment_1)
+{ after(grammarAccess.getCubeTypeAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group__2__Impl
+	rule__CubeType__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getGroup_2()); }
+(rule__CubeType__Group_2__0)?
+{ after(grammarAccess.getCubeTypeAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group__3__Impl
+	rule__CubeType__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group__4__Impl
+	rule__CubeType__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4()); }
+(rule__CubeType__CubeTypeEntityAssignment_4)
+{ after(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeType__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group_2__0__Impl
+	rule__CubeType__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0()); }
+(rule__CubeType__DefaultMeasureAssignment_2_0)
+{ after(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeType__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1()); }
+(rule__CubeType__DefaultMeasureValueAssignment_2_1)
+{ after(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubeDimensionUsage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionUsage__Group__0__Impl
+	rule__CubeDimensionUsage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0()); }
+
+	'dimensionUsage' 
+
+{ after(grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionUsage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionUsage__Group__1__Impl
+	rule__CubeDimensionUsage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1()); }
+(rule__CubeDimensionUsage__SourceValueAssignment_1)
+{ after(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionUsage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionUsage__Group__2__Impl
+	rule__CubeDimensionUsage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2()); }
+
+	'over' 
+
+{ after(grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionUsage__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionUsage__Group__3__Impl
+	rule__CubeDimensionUsage__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3()); }
+(rule__CubeDimensionUsage__OverValueAssignment_3)
+{ after(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionUsage__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionUsage__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionUsageAccess().getSemicolonKeyword_4()); }
+
+	';' 
+
+{ after(grammarAccess.getCubeDimensionUsageAccess().getSemicolonKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeDimension__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimension__Group__0__Impl
+	rule__CubeDimension__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0()); }
+
+	'dimension' 
+
+{ after(grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimension__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimension__Group__1__Impl
+	rule__CubeDimension__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionAccess().getNameAssignment_1()); }
+(rule__CubeDimension__NameAssignment_1)
+{ after(grammarAccess.getCubeDimensionAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimension__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimension__Group__2__Impl
+	rule__CubeDimension__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2()); }
+(rule__CubeDimension__TypeTimeAssignment_2)?
+{ after(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimension__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimension__Group__3__Impl
+	rule__CubeDimension__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimension__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimension__Group__4__Impl
+	rule__CubeDimension__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4()); }
+(rule__CubeDimension__HierarchiesAssignment_4)*
+{ after(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimension__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimension__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeHierarchy__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__0__Impl
+	rule__CubeHierarchy__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__1__Impl
+	rule__CubeHierarchy__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1()); }
+
+	'hierarchy' 
+
+{ after(grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__2__Impl
+	rule__CubeHierarchy__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2()); }
+(rule__CubeHierarchy__NameAssignment_2)?
+{ after(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__3__Impl
+	rule__CubeHierarchy__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3()); }
+(rule__CubeHierarchy__HasAllAssignment_3)?
+{ after(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__4__Impl
+	rule__CubeHierarchy__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getGroup_4()); }
+(rule__CubeHierarchy__Group_4__0)?
+{ after(grammarAccess.getCubeHierarchyAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__5__Impl
+	rule__CubeHierarchy__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getGroup_5()); }
+(rule__CubeHierarchy__Group_5__0)?
+{ after(grammarAccess.getCubeHierarchyAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__6__Impl
+	rule__CubeHierarchy__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__7__Impl
+	rule__CubeHierarchy__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7()); }
+(rule__CubeHierarchy__CubeDimEntityAssignment_7)
+{ after(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeHierarchy__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group_4__0__Impl
+	rule__CubeHierarchy__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0()); }
+(rule__CubeHierarchy__AllMemberNameAssignment_4_0)
+{ after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1()); }
+(rule__CubeHierarchy__AllMemberNameValueAssignment_4_1)
+{ after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubeHierarchy__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group_5__0__Impl
+	rule__CubeHierarchy__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0()); }
+(rule__CubeHierarchy__DefaultMemberAssignment_5_0)
+{ after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeHierarchy__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1()); }
+(rule__CubeHierarchy__DefaultMemberValueAssignment_5_1)
+{ after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubeEntity__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeEntity__Group__0__Impl
+	rule__CubeEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeEntityAccess().getEntityKeyword_0()); }
+
+	'entity' 
+
+{ after(grammarAccess.getCubeEntityAccess().getEntityKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeEntity__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeEntity__Group__1__Impl
+	rule__CubeEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1()); }
+(rule__CubeEntity__EntityValueAssignment_1)
+{ after(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeEntity__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeEntity__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeEntityAccess().getGroup_2()); }
+(rule__CubeEntity__Group_2__0)?
+{ after(grammarAccess.getCubeEntityAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CubeEntity__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeEntity__Group_2__0__Impl
+	rule__CubeEntity__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0()); }
+(rule__CubeEntity__KeyAssignment_2_0)
+{ after(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeEntity__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeEntity__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1()); }
+(rule__CubeEntity__KeyValueAssignment_2_1)
+{ after(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubeTypeEntity__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeTypeEntity__Group__0__Impl
+	rule__CubeTypeEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0()); }
+(rule__CubeTypeEntity__EntityRefAssignment_0)
+{ after(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeTypeEntity__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeTypeEntity__Group__1__Impl
+	rule__CubeTypeEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeTypeEntity__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeTypeEntity__Group__2__Impl
+	rule__CubeTypeEntity__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2()); }
+(rule__CubeTypeEntity__DimensionUsagesAssignment_2)*
+{ after(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeTypeEntity__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeTypeEntity__Group__3__Impl
+	rule__CubeTypeEntity__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3()); }
+(rule__CubeTypeEntity__MeasuresAssignment_3)*
+{ after(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeTypeEntity__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeTypeEntity__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeDimensionEntity__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntity__Group__0__Impl
+	rule__CubeDimensionEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntity__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntity__Group__1__Impl
+	rule__CubeDimensionEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1()); }
+(rule__CubeDimensionEntity__EntityRefAssignment_1)
+{ after(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntity__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntity__Group__2__Impl
+	rule__CubeDimensionEntity__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntity__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntity__Group__3__Impl
+	rule__CubeDimensionEntity__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3()); }
+(rule__CubeDimensionEntity__HierarchLevelsAssignment_3)*
+{ after(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntity__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntity__Group__4__Impl
+	rule__CubeDimensionEntity__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4()); }
+(rule__CubeDimensionEntity__DimEntityAssignment_4)?
+{ after(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntity__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntity__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeDimensionEntityEntity__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__0__Impl
+	rule__CubeDimensionEntityEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0()); }
+(
+
+)
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__1__Impl
+	rule__CubeDimensionEntityEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1()); }
+(rule__CubeDimensionEntityEntity__EntityRefAssignment_1)
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__2__Impl
+	rule__CubeDimensionEntityEntity__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__3__Impl
+	rule__CubeDimensionEntityEntity__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3()); }
+
+	'over' 
+
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__4__Impl
+	rule__CubeDimensionEntityEntity__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4()); }
+(rule__CubeDimensionEntityEntity__OverValueAssignment_4)
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__5__Impl
+	rule__CubeDimensionEntityEntity__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getSemicolonKeyword_5()); }
+
+	';' 
+
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getSemicolonKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__6__Impl
+	rule__CubeDimensionEntityEntity__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_6()); }
+(rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_6)*
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__7__Impl
+	rule__CubeDimensionEntityEntity__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_7()); }
+(rule__CubeDimensionEntityEntity__DimEntityAssignment_7)?
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeDimensionEntityEntity__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeLevel__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group__0__Impl
+	rule__CubeLevel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getLevelKeyword_0()); }
+
+	'level' 
+
+{ after(grammarAccess.getCubeLevelAccess().getLevelKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group__1__Impl
+	rule__CubeLevel__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getNameAssignment_1()); }
+(rule__CubeLevel__NameAssignment_1)
+{ after(grammarAccess.getCubeLevelAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group__2__Impl
+	rule__CubeLevel__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getColumnKeyword_2()); }
+
+	'column=' 
+
+{ after(grammarAccess.getCubeLevelAccess().getColumnKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group__3__Impl
+	rule__CubeLevel__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3()); }
+(rule__CubeLevel__LevelColValueAssignment_3)
+{ after(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group__4__Impl
+	rule__CubeLevel__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4()); }
+(rule__CubeLevel__UniqueMembersAssignment_4)?
+{ after(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group__5__Impl
+	rule__CubeLevel__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getGroup_5()); }
+(rule__CubeLevel__Group_5__0)?
+{ after(grammarAccess.getCubeLevelAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getAlternatives_6()); }
+(rule__CubeLevel__Alternatives_6)
+{ after(grammarAccess.getCubeLevelAccess().getAlternatives_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeLevel__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group_5__0__Impl
+	rule__CubeLevel__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0()); }
+(rule__CubeLevel__LevelTypeAssignment_5_0)
+{ after(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1()); }
+(rule__CubeLevel__LevelTypeValueAssignment_5_1)
+{ after(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubeLevel__Group_6_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group_6_1__0__Impl
+	rule__CubeLevel__Group_6_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group_6_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group_6_1__1__Impl
+	rule__CubeLevel__Group_6_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1_1()); }
+(rule__CubeLevel__PropertiesAssignment_6_1_1)*
+{ after(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group_6_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevel__Group_6_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2()); }
+
+	'}' 
+
+{ after(grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CubeLevelProp__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group__0__Impl
+	rule__CubeLevelProp__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0()); }
+
+	'property' 
+
+{ after(grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group__1__Impl
+	rule__CubeLevelProp__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1()); }
+(rule__CubeLevelProp__NameAssignment_1)
+{ after(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group__2__Impl
+	rule__CubeLevelProp__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2()); }
+
+	'column=' 
+
+{ after(grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group__3__Impl
+	rule__CubeLevelProp__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3()); }
+(rule__CubeLevelProp__LevelPropColValueAssignment_3)
+{ after(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group__4__Impl
+	rule__CubeLevelProp__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getGroup_4()); }
+(rule__CubeLevelProp__Group_4__0)?
+{ after(grammarAccess.getCubeLevelPropAccess().getGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getSemicolonKeyword_5()); }
+
+	';' 
+
+{ after(grammarAccess.getCubeLevelPropAccess().getSemicolonKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__CubeLevelProp__Group_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group_4__0__Impl
+	rule__CubeLevelProp__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0()); }
+(rule__CubeLevelProp__TypeAssignment_4_0)
+{ after(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeLevelProp__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1()); }
+(rule__CubeLevelProp__TypeValueAssignment_4_1)
+{ after(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubeMeasure__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeMeasure__Group__0__Impl
+	rule__CubeMeasure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0()); }
+
+	'measure' 
+
+{ after(grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeMeasure__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeMeasure__Group__1__Impl
+	rule__CubeMeasure__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getNameAssignment_1()); }
+(rule__CubeMeasure__NameAssignment_1)
+{ after(grammarAccess.getCubeMeasureAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeMeasure__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeMeasure__Group__2__Impl
+	rule__CubeMeasure__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2()); }
+(rule__CubeMeasure__AggregatorAssignment_2)
+{ after(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeMeasure__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeMeasure__Group__3__Impl
+	rule__CubeMeasure__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getColumnKeyword_3()); }
+
+	'column=' 
+
+{ after(grammarAccess.getCubeMeasureAccess().getColumnKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeMeasure__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeMeasure__Group__4__Impl
+	rule__CubeMeasure__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4()); }
+(rule__CubeMeasure__MeasureColAssignment_4)
+{ after(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeMeasure__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeMeasure__Group__5__Impl
+	rule__CubeMeasure__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5()); }
+(rule__CubeMeasure__NotVisibleAssignment_5)?
+{ after(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeMeasure__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeMeasure__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeMeasureAccess().getSemicolonKeyword_6()); }
+
+	';' 
+
+{ after(grammarAccess.getCubeMeasureAccess().getSemicolonKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Import__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__0__Impl
+	rule__Import__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getImportAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__1__Impl
+	rule__Import__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+(rule__Import__ImportedNamespaceAssignment_1)
+{ after(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+
+	';' 
+
+{ after(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__CubeQualifiedNameWithWildCard__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeQualifiedNameWithWildCard__Group__0__Impl
+	rule__CubeQualifiedNameWithWildCard__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeQualifiedNameWithWildCard__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); }
+	ruleQualifiedName
+{ after(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeQualifiedNameWithWildCard__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeQualifiedNameWithWildCard__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeQualifiedNameWithWildCard__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup_1()); }
+(rule__CubeQualifiedNameWithWildCard__Group_1__0)?
+{ after(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__CubeQualifiedNameWithWildCard__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeQualifiedNameWithWildCard__Group_1__0__Impl
+	rule__CubeQualifiedNameWithWildCard__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeQualifiedNameWithWildCard__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeQualifiedNameWithWildCard__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__CubeQualifiedNameWithWildCard__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeQualifiedNameWithWildCard__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); }
+
+	'*' 
+
+{ after(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__QualifiedName__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__QualifiedName__Group__0__Impl
+	rule__QualifiedName__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); }
+	ruleValidID
+{ after(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__QualifiedName__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__QualifiedName__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getQualifiedNameAccess().getGroup_1()); }
+(rule__QualifiedName__Group_1__0)*
+{ after(grammarAccess.getQualifiedNameAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__QualifiedName__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__QualifiedName__Group_1__0__Impl
+	rule__QualifiedName__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); }
+(
+	'.' 
+)
+{ after(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__QualifiedName__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__QualifiedName__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__QualifiedName__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); }
+	ruleValidID
+{ after(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LFQN__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LFQN__Group__0__Impl
+	rule__LFQN__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); }
+	RULE_ID
+{ after(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LFQN__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LFQN__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLFQNAccess().getGroup_1()); }
+(rule__LFQN__Group_1__0)*
+{ after(grammarAccess.getLFQNAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__LFQN__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LFQN__Group_1__0__Impl
+	rule__LFQN__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); }
+
+	'.' 
+
+{ after(grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LFQN__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__LFQN__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); }
+	RULE_ID
+{ after(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotation__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group__0__Impl
+	rule__XAnnotation__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); }
+(
+
+)
+{ after(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group__1__Impl
+	rule__XAnnotation__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); }
+
+	'@' 
+
+{ after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group__2__Impl
+	rule__XAnnotation__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); }
+(rule__XAnnotation__AnnotationTypeAssignment_2)
+{ after(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getGroup_3()); }
+(rule__XAnnotation__Group_3__0)?
+{ after(grammarAccess.getXAnnotationAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__XAnnotation__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group_3__0__Impl
+	rule__XAnnotation__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); }
+(
+	'(' 
+)
+{ after(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group_3__1__Impl
+	rule__XAnnotation__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); }
+(rule__XAnnotation__Alternatives_3_1)?
+{ after(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); }
+
+	')' 
+
+{ after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__XAnnotation__Group_3_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group_3_1_0__0__Impl
+	rule__XAnnotation__Group_3_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); }
+(rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0)
+{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group_3_1_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); }
+(rule__XAnnotation__Group_3_1_0_1__0)*
+{ after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotation__Group_3_1_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group_3_1_0_1__0__Impl
+	rule__XAnnotation__Group_3_1_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotation__Group_3_1_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotation__Group_3_1_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotation__Group_3_1_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); }
+(rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1)
+{ after(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValuePair__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValuePair__Group__0__Impl
+	rule__XAnnotationElementValuePair__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); }
+(rule__XAnnotationElementValuePair__Group_0__0)
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValuePair__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); }
+(rule__XAnnotationElementValuePair__ValueAssignment_1)
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValuePair__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValuePair__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); }
+(rule__XAnnotationElementValuePair__Group_0_0__0)
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__XAnnotationElementValuePair__Group_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValuePair__Group_0_0__0__Impl
+	rule__XAnnotationElementValuePair__Group_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); }
+(rule__XAnnotationElementValuePair__ElementAssignment_0_0_0)
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValuePair__Group_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); }
+(rule__XAnnotationElementValueOrCommaList__Group_0_0__0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); }
+(rule__XAnnotationElementValueOrCommaList__Group_0_1__0)?
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); }
+
+	']' 
+
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); }
+(rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); }
+(
+
+)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); }
+
+	'#' 
+
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+
+	'[' 
+
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); }
+(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); }
+(rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0)*
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); }
+(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); }
+	ruleXAnnotationOrExpression
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); }
+(rule__XAnnotationElementValueOrCommaList__Group_1_1__0)?
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); }
+(
+
+)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+(rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+)
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+(rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0)*
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); }
+(rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1)
+{ after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValue__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0__0__Impl
+	rule__XAnnotationElementValue__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); }
+(rule__XAnnotationElementValue__Group_0_0__0)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0__1__Impl
+	rule__XAnnotationElementValue__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); }
+(rule__XAnnotationElementValue__Group_0_1__0)?
+{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); }
+
+	']' 
+
+{ after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__XAnnotationElementValue__Group_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); }
+(rule__XAnnotationElementValue__Group_0_0_0__0)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__XAnnotationElementValue__Group_0_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_0_0__0__Impl
+	rule__XAnnotationElementValue__Group_0_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); }
+(
+
+)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_0_0__1__Impl
+	rule__XAnnotationElementValue__Group_0_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); }
+
+	'#' 
+
+{ after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_0_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+
+	'[' 
+
+{ after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__XAnnotationElementValue__Group_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_1__0__Impl
+	rule__XAnnotationElementValue__Group_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); }
+(rule__XAnnotationElementValue__ElementsAssignment_0_1_0)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); }
+(rule__XAnnotationElementValue__Group_0_1_1__0)*
+{ after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAnnotationElementValue__Group_0_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_1_1__0__Impl
+	rule__XAnnotationElementValue__Group_0_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); }
+
+	',' 
+
+{ after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAnnotationElementValue__Group_0_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); }
+(rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1)
+{ after(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAssignment__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_0__0__Impl
+	rule__XAssignment__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); }
+(
+
+)
+{ after(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_0__1__Impl
+	rule__XAssignment__Group_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); }
+(rule__XAssignment__FeatureAssignment_0_1)
+{ after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_0__2__Impl
+	rule__XAssignment__Group_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); }
+	ruleOpSingleAssign
+{ after(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); }
+(rule__XAssignment__ValueAssignment_0_3)
+{ after(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__XAssignment__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_1__0__Impl
+	rule__XAssignment__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); }
+	ruleXOrExpression
+{ after(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); }
+(rule__XAssignment__Group_1_1__0)?
+{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAssignment__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_1_1__0__Impl
+	rule__XAssignment__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); }
+(rule__XAssignment__Group_1_1_0__0)
+{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); }
+(rule__XAssignment__RightOperandAssignment_1_1_1)
+{ after(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAssignment__Group_1_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_1_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); }
+(rule__XAssignment__Group_1_1_0_0__0)
+{ after(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__XAssignment__Group_1_1_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_1_1_0_0__0__Impl
+	rule__XAssignment__Group_1_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+(
+
+)
+{ after(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAssignment__Group_1_1_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAssignment__Group_1_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAssignment__Group_1_1_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); }
+(rule__XAssignment__FeatureAssignment_1_1_0_0_1)
+{ after(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__OpMultiAssign__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OpMultiAssign__Group_5__0__Impl
+	rule__OpMultiAssign__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); }
+
+	'<' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OpMultiAssign__Group_5__1__Impl
+	rule__OpMultiAssign__Group_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); }
+
+	'<' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OpMultiAssign__Group_5__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__OpMultiAssign__Group_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OpMultiAssign__Group_6__0__Impl
+	rule__OpMultiAssign__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); }
+
+	'>' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OpMultiAssign__Group_6__1__Impl
+	rule__OpMultiAssign__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); }
+(
+	'>' 
+)?
+{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__OpMultiAssign__Group_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__OpMultiAssign__Group_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__OpMultiAssign__Group_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); }
+
+	'>=' 
+
+{ after(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__XOrExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XOrExpression__Group__0__Impl
+	rule__XOrExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); }
+	ruleXAndExpression
+{ after(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XOrExpression__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getGroup_1()); }
+(rule__XOrExpression__Group_1__0)*
+{ after(grammarAccess.getXOrExpressionAccess().getGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XOrExpression__Group_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XOrExpression__Group_1__0__Impl
+	rule__XOrExpression__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); }
+(rule__XOrExpression__Group_1_0__0)
+{ after(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XOrExpression__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); }
+(rule__XOrExpression__RightOperandAssignment_1_1)
+{ after(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XOrExpression__Group_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XOrExpression__Group_1_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); }
+(rule__XOrExpression__Group_1_0_0__0)
+{ after(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__XOrExpression__Group_1_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XOrExpression__Group_1_0_0__0__Impl
+	rule__XOrExpression__Group_1_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+(
+
+)
+{ after(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XOrExpression__Group_1_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XOrExpression__Group_1_0_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XOrExpression__Group_1_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+(rule__XOrExpression__FeatureAssignment_1_0_0_1)
+{ after(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__XAndExpression__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAndExpression__Group__0__Impl
+	rule__XAndExpression__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__XAndExpression__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); }
+	ruleXEqualityExpression
+{ after(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__XAndExpression__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__XAndExpression__Group__1__Impl
+;
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.tokens b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.tokens
new file mode 100644
index 0000000..e9074e7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.tokens
@@ -0,0 +1,245 @@
+'!'=41
+'!='=23
+'!=='=25
+'#'=92
+'%'=40
+'%='=21
+'&&'=15
+'&'=115
+'('=88
+')'=89
+'*'=37
+'**'=38
+'*='=19
+'+'=35
+'++'=42
+'+='=17
+','=90
+'-'=36
+'--'=43
+'-='=18
+'->'=29
+'.'=44
+'..'=31
+'..<'=30
+'/'=39
+'/='=20
+':'=99
+'::'=126
+';'=16
+'<'=28
+'<>'=33
+'='=13
+'=='=22
+'==='=24
+'=>'=32
+'>'=27
+'>='=26
+'?'=114
+'?.'=127
+'?:'=34
+'@'=87
+'Boolean'=61
+'Date'=62
+'Integer'=60
+'Numeric'=59
+'String'=58
+'Time'=63
+'TimeDays'=70
+'TimeHalfYears'=66
+'TimeHours'=71
+'TimeMinutes'=72
+'TimeMonths'=68
+'TimeQuarters'=67
+'TimeSeconds'=73
+'TimeWeeks'=69
+'TimeYears'=65
+'Timestamp'=64
+'['=93
+']'=91
+'allMemberName='=119
+'as'=95
+'avg'=56
+'case'=101
+'catch'=113
+'column='=84
+'count'=53
+'cube'=77
+'default'=100
+'defaultMeasure'=116
+'defaultMember='=120
+'dimension'=80
+'dimensionUsage'=78
+'distinct-count'=57
+'do'=104
+'else'=97
+'entity'=82
+'extends'=46
+'extension'=49
+'false'=51
+'finally'=111
+'for'=102
+'hasAll'=118
+'hierarchy'=81
+'if'=96
+'import'=48
+'instanceof'=94
+'key='=121
+'level'=83
+'levelType='=123
+'max'=55
+'measure'=86
+'min'=54
+'new'=105
+'notVisible'=125
+'null'=106
+'over'=79
+'package'=74
+'property'=85
+'return'=109
+'static'=47
+'sum'=52
+'super'=50
+'switch'=98
+'synchronized'=112
+'throw'=108
+'true'=130
+'try'=110
+'type='=124
+'typeTime'=117
+'typeof'=107
+'uniqueMembers'=122
+'val'=45
+'var'=129
+'while'=103
+'{'=75
+'|'=128
+'||'=14
+'}'=76
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=4
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=5
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSLLexer.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSLLexer.java
new file mode 100644
index 0000000..d10777f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSLLexer.java
@@ -0,0 +1,5068 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalCubeDSLLexer extends Lexer {
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int T__130=130;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    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;
+
+    // delegates
+    // delegators
+
+    public InternalCubeDSLLexer() {;} 
+    public InternalCubeDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalCubeDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:11:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:12:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:13:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:14:7: ( ';' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:14:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:15:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:15:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:16:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:16:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:17:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:17:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:18:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:18:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:19:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:19:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:20:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:20:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:21:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:21:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:22:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:22:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:23:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:23:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:24:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:24:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:26:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:26:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:27:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:27:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:28:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:28:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:29:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:29:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:30:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:30:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:31:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:31:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:32:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:32:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:33:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:33:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:34:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:34:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:35:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:35:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:36:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:36:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:37:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:37:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:38:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:38:9: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:39:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:39:9: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:40:7: ( '++' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:40:9: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:41:7: ( '--' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:41:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:42:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:42:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:43:7: ( 'val' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:43:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:44:7: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:44:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:45:7: ( 'static' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:45:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:46:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:46:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:47:7: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:47:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:48:7: ( 'super' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:48:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:49:7: ( 'false' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:49:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:50:7: ( 'sum' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:50:9: 'sum'
+            {
+            match("sum"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:51:7: ( 'count' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:51:9: 'count'
+            {
+            match("count"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:52:7: ( 'min' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:52:9: 'min'
+            {
+            match("min"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:53:7: ( 'max' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:53:9: 'max'
+            {
+            match("max"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:54:7: ( 'avg' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:54:9: 'avg'
+            {
+            match("avg"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:55:7: ( 'distinct-count' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:55:9: 'distinct-count'
+            {
+            match("distinct-count"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:56:7: ( 'String' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:56:9: 'String'
+            {
+            match("String"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:57:7: ( 'Numeric' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:57:9: 'Numeric'
+            {
+            match("Numeric"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:58:7: ( 'Integer' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:58:9: 'Integer'
+            {
+            match("Integer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:59:7: ( 'Boolean' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:59:9: 'Boolean'
+            {
+            match("Boolean"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:60:7: ( 'Date' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:60:9: 'Date'
+            {
+            match("Date"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:61:7: ( 'Time' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:61:9: 'Time'
+            {
+            match("Time"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__63"
+
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
+        try {
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:62:7: ( 'Timestamp' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:62:9: 'Timestamp'
+            {
+            match("Timestamp"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__64"
+
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
+        try {
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:63:7: ( 'TimeYears' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:63:9: 'TimeYears'
+            {
+            match("TimeYears"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__65"
+
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
+        try {
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:64:7: ( 'TimeHalfYears' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:64:9: 'TimeHalfYears'
+            {
+            match("TimeHalfYears"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__66"
+
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
+        try {
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:65:7: ( 'TimeQuarters' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:65:9: 'TimeQuarters'
+            {
+            match("TimeQuarters"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__67"
+
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
+        try {
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:66:7: ( 'TimeMonths' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:66:9: 'TimeMonths'
+            {
+            match("TimeMonths"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__68"
+
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
+        try {
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:67:7: ( 'TimeWeeks' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:67:9: 'TimeWeeks'
+            {
+            match("TimeWeeks"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__69"
+
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
+        try {
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:68:7: ( 'TimeDays' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:68:9: 'TimeDays'
+            {
+            match("TimeDays"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__70"
+
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
+        try {
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:69:7: ( 'TimeHours' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:69:9: 'TimeHours'
+            {
+            match("TimeHours"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:70:7: ( 'TimeMinutes' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:70:9: 'TimeMinutes'
+            {
+            match("TimeMinutes"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:71:7: ( 'TimeSeconds' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:71:9: 'TimeSeconds'
+            {
+            match("TimeSeconds"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__73"
+
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
+        try {
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:72:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:72:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:73:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:73:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:74:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:74:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:75:7: ( 'cube' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:75:9: 'cube'
+            {
+            match("cube"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:76:7: ( 'dimensionUsage' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:76:9: 'dimensionUsage'
+            {
+            match("dimensionUsage"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:77:7: ( 'over' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:77:9: 'over'
+            {
+            match("over"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:78:7: ( 'dimension' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:78:9: 'dimension'
+            {
+            match("dimension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:79:7: ( 'hierarchy' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:79:9: 'hierarchy'
+            {
+            match("hierarchy"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:80:7: ( 'entity' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:80:9: 'entity'
+            {
+            match("entity"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__82"
+
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
+        try {
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:81:7: ( 'level' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:81:9: 'level'
+            {
+            match("level"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:82:7: ( 'column=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:82:9: 'column='
+            {
+            match("column="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:83:7: ( 'property' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:83:9: 'property'
+            {
+            match("property"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:84:7: ( 'measure' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:84:9: 'measure'
+            {
+            match("measure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:85:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:85:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:86:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:86:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:87:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:87:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:88:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:88:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:89:7: ( ']' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:89:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:90:7: ( '#' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:90:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:91:7: ( '[' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:91:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:92:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:92:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:93:7: ( 'as' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:93:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:94:7: ( 'if' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:94:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:95:7: ( 'else' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:95:9: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__97"
+
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
+        try {
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:96:7: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:96:9: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__98"
+
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
+        try {
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:97:7: ( ':' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:97:9: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__99"
+
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
+        try {
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:98:8: ( 'default' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:98:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:99:8: ( 'case' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:99:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:100:8: ( 'for' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:100:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__102"
+
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:101:8: ( 'while' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:101:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:102:8: ( 'do' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:102:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:103:8: ( 'new' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:103:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:104:8: ( 'null' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:104:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:105:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:105:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__107"
+
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
+        try {
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:106:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:106:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__108"
+
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
+        try {
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:107:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:107:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:108:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:108:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__110"
+
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
+        try {
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:109:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:109:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__111"
+
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
+        try {
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:110:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:110:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
+        try {
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:111:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:111:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__113"
+
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
+        try {
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:112:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:112:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__114"
+
+    // $ANTLR start "T__115"
+    public final void mT__115() throws RecognitionException {
+        try {
+            int _type = T__115;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:113:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:113:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__115"
+
+    // $ANTLR start "T__116"
+    public final void mT__116() throws RecognitionException {
+        try {
+            int _type = T__116;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:114:8: ( 'defaultMeasure' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:114:10: 'defaultMeasure'
+            {
+            match("defaultMeasure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__116"
+
+    // $ANTLR start "T__117"
+    public final void mT__117() throws RecognitionException {
+        try {
+            int _type = T__117;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:115:8: ( 'typeTime' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:115:10: 'typeTime'
+            {
+            match("typeTime"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__117"
+
+    // $ANTLR start "T__118"
+    public final void mT__118() throws RecognitionException {
+        try {
+            int _type = T__118;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:116:8: ( 'hasAll' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:116:10: 'hasAll'
+            {
+            match("hasAll"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__118"
+
+    // $ANTLR start "T__119"
+    public final void mT__119() throws RecognitionException {
+        try {
+            int _type = T__119;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:117:8: ( 'allMemberName=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:117:10: 'allMemberName='
+            {
+            match("allMemberName="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__119"
+
+    // $ANTLR start "T__120"
+    public final void mT__120() throws RecognitionException {
+        try {
+            int _type = T__120;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:118:8: ( 'defaultMember=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:118:10: 'defaultMember='
+            {
+            match("defaultMember="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__120"
+
+    // $ANTLR start "T__121"
+    public final void mT__121() throws RecognitionException {
+        try {
+            int _type = T__121;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:119:8: ( 'key=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:119:10: 'key='
+            {
+            match("key="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__121"
+
+    // $ANTLR start "T__122"
+    public final void mT__122() throws RecognitionException {
+        try {
+            int _type = T__122;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:120:8: ( 'uniqueMembers' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:120:10: 'uniqueMembers'
+            {
+            match("uniqueMembers"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__122"
+
+    // $ANTLR start "T__123"
+    public final void mT__123() throws RecognitionException {
+        try {
+            int _type = T__123;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:121:8: ( 'levelType=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:121:10: 'levelType='
+            {
+            match("levelType="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__123"
+
+    // $ANTLR start "T__124"
+    public final void mT__124() throws RecognitionException {
+        try {
+            int _type = T__124;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:122:8: ( 'type=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:122:10: 'type='
+            {
+            match("type="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:123:8: ( 'notVisible' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:123:10: 'notVisible'
+            {
+            match("notVisible"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:124:8: ( '::' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:124:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__126"
+
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:125:8: ( '?.' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:125:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:126:8: ( '|' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:126:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:127:8: ( 'var' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:127:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:128:8: ( 'true' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:128:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:12: ( '0x' | '0X' )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='0') ) {
+                int LA1_1 = input.LA(2);
+
+                if ( (LA1_1=='x') ) {
+                    alt1=1;
+                }
+                else if ( (LA1_1=='X') ) {
+                    alt1=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 1, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            int cnt2=0;
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='F')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='f')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt2 >= 1 ) break loop2;
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
+                }
+                cnt2++;
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0=='#') ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    int alt3=2;
+                    int LA3_0 = input.LA(1);
+
+                    if ( (LA3_0=='B'||LA3_0=='b') ) {
+                        alt3=1;
+                    }
+                    else if ( (LA3_0=='L'||LA3_0=='l') ) {
+                        alt3=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 3, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt3) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            {
+                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25945:84: ( 'l' | 'L' )
+                            {
+                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_HEX"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25947:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25947:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25947:21: ( '0' .. '9' | '_' )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>='0' && LA5_0<='9')||LA5_0=='_') ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_DECIMAL"
+    public final void mRULE_DECIMAL() throws RecognitionException {
+        try {
+            int _type = RULE_DECIMAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='E'||LA7_0=='e') ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    {
+                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:
+                            {
+                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+                    mRULE_INT(); 
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            int alt8=3;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0=='B'||LA8_0=='b') ) {
+                alt8=1;
+            }
+            else if ( (LA8_0=='D'||LA8_0=='F'||LA8_0=='L'||LA8_0=='d'||LA8_0=='f'||LA8_0=='l') ) {
+                alt8=2;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    {
+                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25949: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();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_DECIMAL"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25951:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25951:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25951:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25951:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25951:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0=='\"') ) {
+                alt15=1;
+            }
+            else if ( (LA15_0=='\'') ) {
+                alt15=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop11:
+                    do {
+                        int alt11=3;
+                        int LA11_0 = input.LA(1);
+
+                        if ( (LA11_0=='\\') ) {
+                            alt11=1;
+                        }
+                        else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFF')) ) {
+                            alt11=2;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop13:
+                    do {
+                        int alt13=3;
+                        int LA13_0 = input.LA(1);
+
+                        if ( (LA13_0=='\\') ) {
+                            alt13=1;
+                        }
+                        else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
+                            alt13=2;
+                        }
+
+
+                        switch (alt13) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop13;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25953:79: '\\''
+                            {
+                            match('\''); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25955:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25955:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25955:24: ( options {greedy=false; } : . )*
+            loop16:
+            do {
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+
+                if ( (LA16_0=='*') ) {
+                    int LA16_1 = input.LA(2);
+
+                    if ( (LA16_1=='/') ) {
+                        alt16=2;
+                    }
+                    else if ( ((LA16_1>='\u0000' && LA16_1<='.')||(LA16_1>='0' && LA16_1<='\uFFFF')) ) {
+                        alt16=1;
+                    }
+
+
+                }
+                else if ( ((LA16_0>='\u0000' && LA16_0<=')')||(LA16_0>='+' && LA16_0<='\uFFFF')) ) {
+                    alt16=1;
+                }
+
+
+                switch (alt16) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25955:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop16;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957: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();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957:40: ( ( '\\r' )? '\\n' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0=='\n'||LA19_0=='\r') ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25957:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25959:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25959:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25959:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt20=0;
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt20 >= 1 ) break loop20;
+                        EarlyExitException eee =
+                            new EarlyExitException(20, input);
+                        throw eee;
+                }
+                cnt20++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25961:16: ( . )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:25961:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=127;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:749: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:758: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:767: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:780: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:788: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:800: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:816: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:832: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1:840: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\74\1\76\1\100\1\uffff\1\104\1\110\1\113\1\117\1\121\1\123\1\125\1\127\1\131\1\134\20\136\2\uffff\3\136\7\uffff\1\u008e\6\136\2\u009b\1\71\5\uffff\1\u00a0\27\uffff\1\u00a2\5\uffff\1\u00a4\4\uffff\1\136\1\uffff\11\136\1\u00b1\12\136\1\u00be\3\136\1\u00c3\10\136\2\uffff\4\136\11\uffff\12\136\1\uffff\1\u009b\12\uffff\1\u00db\1\u00dc\5\136\1\u00e2\4\136\1\uffff\1\136\1\u00e8\6\136\1\u00ef\1\u00f0\1\136\1\u00f2\1\uffff\4\136\1\uffff\15\136\1\u0104\4\136\1\u0109\4\136\2\uffff\2\136\1\u0110\2\136\1\uffff\5\136\1\uffff\3\136\1\u011b\1\u011c\1\136\2\uffff\1\136\1\uffff\10\136\1\u0127\1\u0130\2\136\1\u0133\4\136\1\uffff\1\u0138\3\136\1\uffff\1\u013e\1\136\1\uffff\3\136\1\uffff\1\136\1\u0145\4\136\1\u014a\1\136\1\u014c\1\136\2\uffff\1\u014e\11\136\1\uffff\10\136\1\uffff\2\136\1\uffff\2\136\1\u0167\1\u0168\1\uffff\3\136\1\uffff\1\u016c\1\uffff\4\136\1\u0171\1\u0172\1\uffff\1\u0173\1\136\1\u0175\1\136\1\uffff\1\136\1\uffff\1\136\1\uffff\5\136\1\u017e\20\136\1\u018f\1\136\2\uffff\1\136\1\u0192\1\136\1\uffff\1\u0194\1\136\1\u0196\1\136\3\uffff\1\136\1\uffff\1\136\1\u019a\1\uffff\1\u019b\3\136\1\u01a0\1\uffff\1\u01a1\1\u01a2\1\u01a3\12\136\1\u01ae\2\136\1\uffff\2\136\1\uffff\1\136\1\uffff\1\136\1\uffff\3\136\2\uffff\4\136\4\uffff\10\136\1\u01c4\1\136\1\uffff\1\u01c6\3\136\1\u01ca\1\136\1\u01cc\3\136\1\uffff\1\u01d1\1\136\1\u01d4\1\u01d5\1\136\1\u01d7\3\136\1\u01db\1\uffff\1\136\1\uffff\1\u01dd\2\136\1\uffff\1\136\1\uffff\1\136\1\u01e2\2\136\1\uffff\2\136\2\uffff\1\136\1\uffff\1\136\1\u01e9\1\136\1\uffff\1\136\2\uffff\1\u01ec\2\136\1\uffff\6\136\1\uffff\1\u01f5\1\u01f6\1\uffff\1\136\1\u01f8\5\136\1\u01fe\2\uffff\1\136\1\uffff\4\136\1\u0204\1\uffff\1\u0205\1\uffff\1\u0206\1\u0207\5\uffff";
+    static final String DFA21_eofS =
+        "\u0208\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\uffff\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\164\1\146\3\141\1\154\1\145\1\164\1\165\1\156\1\157\1\141\1\151\1\141\2\uffff\1\166\1\141\1\145\7\uffff\1\72\1\150\1\145\1\150\2\145\1\156\2\60\1\44\5\uffff\1\75\27\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\2\164\1\163\1\141\1\155\1\151\1\156\1\160\1\163\1\44\1\154\1\162\1\156\1\154\1\142\1\163\1\156\1\170\1\141\1\147\1\44\1\154\1\155\1\146\1\44\1\162\1\155\1\164\1\157\1\164\1\155\1\143\1\157\2\uffff\2\145\1\163\1\166\11\uffff\1\151\1\167\1\154\1\164\1\160\1\162\1\165\1\164\1\171\1\151\1\uffff\1\60\12\uffff\2\44\1\145\1\151\1\145\1\164\1\145\1\44\1\164\1\143\1\157\1\164\1\uffff\1\163\1\44\1\141\1\156\1\165\2\145\1\143\2\44\1\163\1\44\1\uffff\1\115\1\164\1\145\1\141\1\uffff\1\151\2\145\1\154\2\145\1\153\1\160\2\162\1\101\1\145\1\154\1\44\1\154\1\126\1\145\1\157\1\44\1\145\1\165\1\75\1\161\2\uffff\1\156\1\164\1\44\1\151\1\162\1\uffff\1\143\1\150\1\162\1\141\1\145\1\uffff\1\154\1\164\1\155\2\44\1\150\2\uffff\1\165\1\uffff\1\145\1\151\1\156\1\165\1\156\1\162\1\147\1\145\2\44\1\141\1\145\1\44\1\141\2\154\1\145\1\uffff\1\44\1\151\1\75\1\167\1\uffff\1\44\1\162\1\uffff\1\165\1\144\1\171\1\uffff\1\143\1\44\1\150\1\162\1\164\1\156\1\44\1\154\1\44\1\156\2\uffff\1\44\1\162\1\155\1\156\1\163\1\154\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\141\1\165\1\151\1\145\1\141\1\145\1\uffff\1\147\1\162\1\uffff\1\162\1\154\2\44\1\uffff\1\163\1\146\1\151\1\uffff\1\44\1\uffff\1\156\1\145\1\163\1\151\2\44\1\uffff\1\44\1\157\1\44\1\143\1\uffff\1\171\1\uffff\1\75\1\uffff\1\145\1\142\1\143\1\151\1\164\1\44\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\145\1\164\1\143\1\44\1\171\2\uffff\1\151\1\44\1\155\1\uffff\1\44\1\115\1\44\1\157\3\uffff\1\156\1\uffff\1\145\1\44\1\uffff\1\44\1\145\1\164\1\157\1\44\1\uffff\3\44\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\44\1\171\1\150\1\uffff\1\160\1\142\1\uffff\1\145\1\uffff\1\145\1\uffff\1\156\1\151\1\157\2\uffff\1\162\1\55\1\156\1\145\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\44\1\156\1\uffff\1\44\1\171\1\145\1\154\1\44\1\155\1\44\1\172\1\146\1\116\1\uffff\1\44\1\141\2\44\1\145\1\44\1\145\1\163\1\145\1\44\1\uffff\1\144\1\uffff\1\44\1\75\1\145\1\uffff\1\142\1\uffff\1\145\1\44\1\141\1\163\1\uffff\1\163\1\142\2\uffff\1\141\1\uffff\1\162\1\44\1\163\1\uffff\1\163\2\uffff\1\44\1\145\1\144\1\uffff\1\155\1\141\1\165\1\145\1\162\1\163\1\uffff\2\44\1\uffff\1\162\1\44\1\145\1\147\2\162\1\163\1\44\2\uffff\1\163\1\uffff\1\75\2\145\1\75\1\44\1\uffff\1\44\1\uffff\2\44\5\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\uffff\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1\170\1\171\1\156\1\157\1\165\1\151\1\166\1\157\1\164\1\165\1\156\1\157\1\141\1\151\1\162\2\uffff\1\166\1\151\1\145\7\uffff\1\72\1\150\1\165\1\171\2\145\1\156\1\170\1\154\1\172\5\uffff\1\75\27\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\160\1\163\1\172\1\154\1\162\1\156\1\165\1\142\1\164\1\156\1\170\1\141\1\147\1\172\1\154\1\163\1\146\1\172\1\162\1\155\1\164\1\157\1\164\1\155\1\143\1\157\2\uffff\2\145\1\163\1\166\11\uffff\1\151\1\167\1\154\1\164\1\160\1\162\1\171\1\164\1\171\1\151\1\uffff\1\154\12\uffff\2\172\1\145\1\151\1\145\1\164\1\145\1\172\1\164\1\143\1\157\1\164\1\uffff\1\163\1\172\1\141\1\156\1\165\2\145\1\143\2\172\1\163\1\172\1\uffff\1\115\1\164\1\145\1\141\1\uffff\1\151\2\145\1\154\2\145\1\153\1\160\2\162\1\101\1\145\1\154\1\172\1\154\1\126\1\145\1\157\1\172\1\145\1\165\1\75\1\161\2\uffff\1\156\1\164\1\172\1\151\1\162\1\uffff\1\143\1\150\1\162\1\141\1\145\1\uffff\1\154\1\164\1\155\2\172\1\150\2\uffff\1\165\1\uffff\1\145\1\151\1\156\1\165\1\156\1\162\1\147\1\145\2\172\1\141\1\145\1\172\1\141\2\154\1\145\1\uffff\1\172\1\151\1\157\1\167\1\uffff\1\172\1\162\1\uffff\1\165\1\163\1\171\1\uffff\1\143\1\172\1\150\1\162\1\164\1\156\1\172\1\154\1\172\1\156\2\uffff\1\172\1\162\1\155\1\156\1\163\1\154\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\157\1\165\1\157\1\145\1\141\1\145\1\uffff\1\147\1\162\1\uffff\1\162\1\154\2\172\1\uffff\1\163\1\146\1\151\1\uffff\1\172\1\uffff\1\156\1\145\1\163\1\151\2\172\1\uffff\1\172\1\157\1\172\1\143\1\uffff\1\171\1\uffff\1\75\1\uffff\1\145\1\142\1\143\1\151\1\164\1\172\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\145\1\164\1\143\1\172\1\171\2\uffff\1\151\1\172\1\155\1\uffff\1\172\1\115\1\172\1\157\3\uffff\1\156\1\uffff\1\145\1\172\1\uffff\1\172\1\145\1\164\1\157\1\172\1\uffff\3\172\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\172\1\171\1\150\1\uffff\1\160\1\142\1\uffff\1\145\1\uffff\1\145\1\uffff\1\156\1\151\1\157\2\uffff\1\162\1\55\1\156\1\145\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\172\1\156\1\uffff\1\172\1\171\1\145\1\154\1\172\1\155\2\172\1\146\1\116\1\uffff\1\172\1\155\2\172\1\145\1\172\1\145\1\163\1\145\1\172\1\uffff\1\144\1\uffff\1\172\1\75\1\145\1\uffff\1\142\1\uffff\1\145\1\172\1\141\1\163\1\uffff\1\163\1\142\2\uffff\1\141\1\uffff\1\162\1\172\1\163\1\uffff\1\163\2\uffff\1\172\1\145\1\144\1\uffff\1\155\1\141\1\165\1\145\1\162\1\163\1\uffff\2\172\1\uffff\1\162\1\172\1\145\1\147\2\162\1\163\1\172\2\uffff\1\163\1\uffff\1\75\2\145\1\75\1\172\1\uffff\1\172\1\uffff\2\172\5\uffff";
+    static final String DFA21_acceptS =
+        "\4\uffff\1\4\32\uffff\1\77\1\100\3\uffff\1\113\1\114\1\115\1\116\1\117\1\120\1\121\12\uffff\1\172\2\173\1\176\1\177\1\uffff\1\24\1\1\1\2\1\164\1\3\1\147\1\4\1\5\1\36\1\27\1\6\1\21\1\37\1\30\1\7\1\32\1\31\1\10\1\174\1\175\1\33\1\11\1\34\1\uffff\1\35\1\16\1\17\1\25\1\20\1\uffff\1\40\1\26\1\163\1\146\1\uffff\1\172\41\uffff\1\77\1\100\4\uffff\1\113\1\114\1\115\1\116\1\117\1\120\1\121\1\162\1\127\12\uffff\1\167\1\uffff\1\170\1\171\1\173\1\176\1\14\1\12\1\15\1\13\1\22\1\23\14\uffff\1\124\14\uffff\1\123\4\uffff\1\134\27\uffff\1\41\1\165\5\uffff\1\50\5\uffff\1\132\6\uffff\1\52\1\53\1\uffff\1\54\21\uffff\1\135\4\uffff\1\142\2\uffff\1\155\3\uffff\1\125\12\uffff\1\101\1\131\12\uffff\1\62\10\uffff\1\63\2\uffff\1\103\4\uffff\1\136\3\uffff\1\160\1\uffff\1\166\6\uffff\1\46\4\uffff\1\47\1\uffff\1\51\1\uffff\1\145\30\uffff\1\107\1\133\3\uffff\1\140\4\uffff\1\106\1\43\1\126\1\uffff\1\44\2\uffff\1\110\5\uffff\1\56\20\uffff\1\152\2\uffff\1\137\1\uffff\1\141\1\uffff\1\42\3\uffff\1\143\1\112\4\uffff\1\130\1\57\1\60\1\61\12\uffff\1\76\12\uffff\1\55\12\uffff\1\72\1\uffff\1\111\3\uffff\1\151\1\uffff\1\45\4\uffff\1\104\2\uffff\1\64\1\65\1\uffff\1\73\3\uffff\1\71\1\uffff\1\105\1\157\3\uffff\1\122\6\uffff\1\70\2\uffff\1\161\10\uffff\1\74\1\75\1\uffff\1\144\5\uffff\1\67\1\uffff\1\153\2\uffff\1\154\1\66\1\156\1\102\1\150";
+    static final String DFA21_specialS =
+        "\1\0\u0207\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\71\2\70\2\71\1\70\22\71\1\70\1\12\1\66\1\51\1\65\1\11\1\3\1\67\1\45\1\46\1\7\1\5\1\47\1\6\1\15\1\10\1\62\11\63\1\53\1\4\1\14\1\1\1\13\1\16\1\44\1\65\1\33\1\65\1\34\4\65\1\32\4\65\1\31\4\65\1\30\1\35\6\65\1\52\1\71\1\50\1\64\1\65\1\71\1\26\1\65\1\24\1\27\1\20\1\23\1\65\1\42\1\22\1\65\1\60\1\43\1\25\1\55\1\41\1\36\1\65\1\57\1\21\1\56\1\61\1\17\1\54\3\65\1\37\1\2\1\40\uff82\71",
+            "\1\72\1\73",
+            "\1\75",
+            "\1\77",
+            "",
+            "\1\103\21\uffff\1\102",
+            "\1\107\17\uffff\1\105\1\106",
+            "\1\112\22\uffff\1\111",
+            "\1\115\4\uffff\1\116\15\uffff\1\114",
+            "\1\120",
+            "\1\122",
+            "\1\124",
+            "\1\126",
+            "\1\130",
+            "\1\133\13\uffff\1\132",
+            "\1\135",
+            "\1\141\1\uffff\1\140\11\uffff\1\137",
+            "\1\142\1\143\1\uffff\1\144\1\uffff\1\145",
+            "\1\150\6\uffff\1\146\1\147",
+            "\1\151\7\uffff\1\153\5\uffff\1\152",
+            "\1\156\15\uffff\1\154\5\uffff\1\155",
+            "\1\160\3\uffff\1\161\3\uffff\1\157",
+            "\1\164\6\uffff\1\163\2\uffff\1\162",
+            "\1\166\3\uffff\1\165\5\uffff\1\167",
+            "\1\170",
+            "\1\171",
+            "\1\172",
+            "\1\173",
+            "\1\174",
+            "\1\175",
+            "\1\176\20\uffff\1\177",
+            "",
+            "",
+            "\1\u0082",
+            "\1\u0084\7\uffff\1\u0083",
+            "\1\u0085",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u008d",
+            "\1\u008f",
+            "\1\u0090\11\uffff\1\u0092\5\uffff\1\u0091",
+            "\1\u0094\11\uffff\1\u0095\6\uffff\1\u0093",
+            "\1\u0096",
+            "\1\u0097",
+            "\1\u0098",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099\6\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
+            "\1\136\34\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009f",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a3",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a5\5\uffff\1\u00a6",
+            "",
+            "\1\u00a7",
+            "\1\u00a8",
+            "\1\u00a9",
+            "\1\u00aa",
+            "\1\u00ac\2\uffff\1\u00ab",
+            "\1\u00ad",
+            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b6\10\uffff\1\u00b5",
+            "\1\u00b7",
+            "\1\u00b8\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u00bf",
+            "\1\u00c1\5\uffff\1\u00c0",
+            "\1\u00c2",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "",
+            "",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d7\3\uffff\1\u00d6",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "",
+            "\1\u00e7",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u00f1",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
+            "",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "",
+            "",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0111",
+            "\1\u0112",
+            "",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u011d",
+            "",
+            "",
+            "\1\u011e",
+            "",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\3\136\1\u012e\3\136\1\u012a\4\136\1\u012c\3\136\1\u012b\1\136\1\u012f\3\136\1\u012d\1\136\1\u0129\1\136\4\uffff\1\136\1\uffff\22\136\1\u0128\7\136",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0139",
+            "\1\u013c\26\uffff\1\u013b\32\uffff\1\u013a",
+            "\1\u013d",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u013f",
+            "",
+            "\1\u0140",
+            "\1\u0141\16\uffff\1\u0142",
+            "\1\u0143",
+            "",
+            "\1\u0144",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u014b",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u014d",
+            "",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a\15\uffff\1\u015b",
+            "\1\u015c",
+            "\1\u015e\5\uffff\1\u015d",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "",
+            "\1\u0162",
+            "\1\u0163",
+            "",
+            "\1\u0164",
+            "\1\u0165",
+            "\1\136\13\uffff\12\136\7\uffff\23\136\1\u0166\6\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0174",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0176",
+            "",
+            "\1\u0177",
+            "",
+            "\1\u0178",
+            "",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0190",
+            "",
+            "",
+            "\1\u0191",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0193",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0195",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u0197",
+            "",
+            "",
+            "",
+            "\1\u0198",
+            "",
+            "\1\u0199",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u019c",
+            "\1\u019d",
+            "\1\u019e",
+            "\1\136\13\uffff\12\136\7\uffff\14\136\1\u019f\15\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01af",
+            "\1\u01b0",
+            "",
+            "\1\u01b1",
+            "\1\u01b2",
+            "",
+            "\1\u01b3",
+            "",
+            "\1\u01b4",
+            "",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "",
+            "",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "",
+            "",
+            "",
+            "",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01c5",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01cb",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\24\136\1\u01d0\5\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01d2\13\uffff\1\u01d3",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01d6",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01d8",
+            "\1\u01d9",
+            "\1\u01da",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\u01dc",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01de",
+            "\1\u01df",
+            "",
+            "\1\u01e0",
+            "",
+            "\1\u01e1",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01e3",
+            "\1\u01e4",
+            "",
+            "\1\u01e5",
+            "\1\u01e6",
+            "",
+            "",
+            "\1\u01e7",
+            "",
+            "\1\u01e8",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01ea",
+            "",
+            "\1\u01eb",
+            "",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01ed",
+            "\1\u01ee",
+            "",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\u01f7",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "",
+            "\1\u01ff",
+            "",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "\1\136\13\uffff\12\136\7\uffff\32\136\4\uffff\1\136\1\uffff\32\136",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | 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;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='=') ) {s = 1;}
+
+                        else if ( (LA21_0=='|') ) {s = 2;}
+
+                        else if ( (LA21_0=='&') ) {s = 3;}
+
+                        else if ( (LA21_0==';') ) {s = 4;}
+
+                        else if ( (LA21_0=='+') ) {s = 5;}
+
+                        else if ( (LA21_0=='-') ) {s = 6;}
+
+                        else if ( (LA21_0=='*') ) {s = 7;}
+
+                        else if ( (LA21_0=='/') ) {s = 8;}
+
+                        else if ( (LA21_0=='%') ) {s = 9;}
+
+                        else if ( (LA21_0=='!') ) {s = 10;}
+
+                        else if ( (LA21_0=='>') ) {s = 11;}
+
+                        else if ( (LA21_0=='<') ) {s = 12;}
+
+                        else if ( (LA21_0=='.') ) {s = 13;}
+
+                        else if ( (LA21_0=='?') ) {s = 14;}
+
+                        else if ( (LA21_0=='v') ) {s = 15;}
+
+                        else if ( (LA21_0=='e') ) {s = 16;}
+
+                        else if ( (LA21_0=='s') ) {s = 17;}
+
+                        else if ( (LA21_0=='i') ) {s = 18;}
+
+                        else if ( (LA21_0=='f') ) {s = 19;}
+
+                        else if ( (LA21_0=='c') ) {s = 20;}
+
+                        else if ( (LA21_0=='m') ) {s = 21;}
+
+                        else if ( (LA21_0=='a') ) {s = 22;}
+
+                        else if ( (LA21_0=='d') ) {s = 23;}
+
+                        else if ( (LA21_0=='S') ) {s = 24;}
+
+                        else if ( (LA21_0=='N') ) {s = 25;}
+
+                        else if ( (LA21_0=='I') ) {s = 26;}
+
+                        else if ( (LA21_0=='B') ) {s = 27;}
+
+                        else if ( (LA21_0=='D') ) {s = 28;}
+
+                        else if ( (LA21_0=='T') ) {s = 29;}
+
+                        else if ( (LA21_0=='p') ) {s = 30;}
+
+                        else if ( (LA21_0=='{') ) {s = 31;}
+
+                        else if ( (LA21_0=='}') ) {s = 32;}
+
+                        else if ( (LA21_0=='o') ) {s = 33;}
+
+                        else if ( (LA21_0=='h') ) {s = 34;}
+
+                        else if ( (LA21_0=='l') ) {s = 35;}
+
+                        else if ( (LA21_0=='@') ) {s = 36;}
+
+                        else if ( (LA21_0=='(') ) {s = 37;}
+
+                        else if ( (LA21_0==')') ) {s = 38;}
+
+                        else if ( (LA21_0==',') ) {s = 39;}
+
+                        else if ( (LA21_0==']') ) {s = 40;}
+
+                        else if ( (LA21_0=='#') ) {s = 41;}
+
+                        else if ( (LA21_0=='[') ) {s = 42;}
+
+                        else if ( (LA21_0==':') ) {s = 43;}
+
+                        else if ( (LA21_0=='w') ) {s = 44;}
+
+                        else if ( (LA21_0=='n') ) {s = 45;}
+
+                        else if ( (LA21_0=='t') ) {s = 46;}
+
+                        else if ( (LA21_0=='r') ) {s = 47;}
+
+                        else if ( (LA21_0=='k') ) {s = 48;}
+
+                        else if ( (LA21_0=='u') ) {s = 49;}
+
+                        else if ( (LA21_0=='0') ) {s = 50;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 51;}
+
+                        else if ( (LA21_0=='^') ) {s = 52;}
+
+                        else if ( (LA21_0=='$'||LA21_0=='A'||LA21_0=='C'||(LA21_0>='E' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='M')||(LA21_0>='O' && LA21_0<='R')||(LA21_0>='U' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||LA21_0=='j'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 53;}
+
+                        else if ( (LA21_0=='\"') ) {s = 54;}
+
+                        else if ( (LA21_0=='\'') ) {s = 55;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 56;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 57;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSLParser.java
new file mode 100644
index 0000000..704f887
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSLParser.java
@@ -0,0 +1,10015 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+@SuppressWarnings("all")
+public class InternalCubeDSLParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "';'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'sum'", "'count'", "'min'", "'max'", "'avg'", "'distinct-count'", "'String'", "'Numeric'", "'Integer'", "'Boolean'", "'Date'", "'Time'", "'Timestamp'", "'TimeYears'", "'TimeHalfYears'", "'TimeQuarters'", "'TimeMonths'", "'TimeWeeks'", "'TimeDays'", "'TimeHours'", "'TimeMinutes'", "'TimeSeconds'", "'package'", "'{'", "'}'", "'cube'", "'dimensionUsage'", "'over'", "'dimension'", "'hierarchy'", "'entity'", "'level'", "'column='", "'property'", "'measure'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'defaultMeasure'", "'typeTime'", "'hasAll'", "'allMemberName='", "'defaultMember='", "'key='", "'uniqueMembers'", "'levelType='", "'type='", "'notVisible'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int T__130=130;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    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;
+
+    // delegates
+    // delegators
+
+
+        public InternalCubeDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalCubeDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalCubeDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g"; }
+
+
+     
+     	private CubeDSLGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleCubeModel"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:61:1: entryRuleCubeModel : ruleCubeModel EOF ;
+    public final void entryRuleCubeModel() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:62:1: ( ruleCubeModel EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:63:1: ruleCubeModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeModel_in_entryRuleCubeModel67);
+            ruleCubeModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeModel74); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeModel"
+
+
+    // $ANTLR start "ruleCubeModel"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:70:1: ruleCubeModel : ( ( rule__CubeModel__Group__0 ) ) ;
+    public final void ruleCubeModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:74:2: ( ( ( rule__CubeModel__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:75:1: ( ( rule__CubeModel__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:75:1: ( ( rule__CubeModel__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:76:1: ( rule__CubeModel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:77:1: ( rule__CubeModel__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:77:2: rule__CubeModel__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeModel__Group__0_in_ruleCubeModel100);
+            rule__CubeModel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeModel"
+
+
+    // $ANTLR start "entryRuleCubePackage"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:89:1: entryRuleCubePackage : ruleCubePackage EOF ;
+    public final void entryRuleCubePackage() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:90:1: ( ruleCubePackage EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:91:1: ruleCubePackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubePackage_in_entryRuleCubePackage127);
+            ruleCubePackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubePackage134); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubePackage"
+
+
+    // $ANTLR start "ruleCubePackage"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:98:1: ruleCubePackage : ( ( rule__CubePackage__Group__0 ) ) ;
+    public final void ruleCubePackage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:102:2: ( ( ( rule__CubePackage__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:103:1: ( ( rule__CubePackage__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:103:1: ( ( rule__CubePackage__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:104:1: ( rule__CubePackage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:105:1: ( rule__CubePackage__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:105:2: rule__CubePackage__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubePackage__Group__0_in_ruleCubePackage160);
+            rule__CubePackage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubePackage"
+
+
+    // $ANTLR start "entryRuleCubeType"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:117:1: entryRuleCubeType : ruleCubeType EOF ;
+    public final void entryRuleCubeType() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:118:1: ( ruleCubeType EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:119:1: ruleCubeType EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeType_in_entryRuleCubeType187);
+            ruleCubeType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeType194); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeType"
+
+
+    // $ANTLR start "ruleCubeType"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:126:1: ruleCubeType : ( ( rule__CubeType__Group__0 ) ) ;
+    public final void ruleCubeType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:130:2: ( ( ( rule__CubeType__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:131:1: ( ( rule__CubeType__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:131:1: ( ( rule__CubeType__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:132:1: ( rule__CubeType__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:133:1: ( rule__CubeType__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:133:2: rule__CubeType__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeType__Group__0_in_ruleCubeType220);
+            rule__CubeType__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeType"
+
+
+    // $ANTLR start "entryRuleCubeDimensionUsage"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:145:1: entryRuleCubeDimensionUsage : ruleCubeDimensionUsage EOF ;
+    public final void entryRuleCubeDimensionUsage() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:146:1: ( ruleCubeDimensionUsage EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:147:1: ruleCubeDimensionUsage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimensionUsage_in_entryRuleCubeDimensionUsage247);
+            ruleCubeDimensionUsage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionUsage254); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimensionUsage"
+
+
+    // $ANTLR start "ruleCubeDimensionUsage"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:154:1: ruleCubeDimensionUsage : ( ( rule__CubeDimensionUsage__Group__0 ) ) ;
+    public final void ruleCubeDimensionUsage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:158:2: ( ( ( rule__CubeDimensionUsage__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:159:1: ( ( rule__CubeDimensionUsage__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:159:1: ( ( rule__CubeDimensionUsage__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:160:1: ( rule__CubeDimensionUsage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:161:1: ( rule__CubeDimensionUsage__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:161:2: rule__CubeDimensionUsage__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeDimensionUsage__Group__0_in_ruleCubeDimensionUsage280);
+            rule__CubeDimensionUsage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimensionUsage"
+
+
+    // $ANTLR start "entryRuleCubeDimension"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:173:1: entryRuleCubeDimension : ruleCubeDimension EOF ;
+    public final void entryRuleCubeDimension() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:174:1: ( ruleCubeDimension EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:175:1: ruleCubeDimension EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimension_in_entryRuleCubeDimension307);
+            ruleCubeDimension();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimension314); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimension"
+
+
+    // $ANTLR start "ruleCubeDimension"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:182:1: ruleCubeDimension : ( ( rule__CubeDimension__Group__0 ) ) ;
+    public final void ruleCubeDimension() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:186:2: ( ( ( rule__CubeDimension__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:187:1: ( ( rule__CubeDimension__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:187:1: ( ( rule__CubeDimension__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:188:1: ( rule__CubeDimension__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:189:1: ( rule__CubeDimension__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:189:2: rule__CubeDimension__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeDimension__Group__0_in_ruleCubeDimension340);
+            rule__CubeDimension__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimension"
+
+
+    // $ANTLR start "entryRuleCubeHierarchy"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:201:1: entryRuleCubeHierarchy : ruleCubeHierarchy EOF ;
+    public final void entryRuleCubeHierarchy() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:202:1: ( ruleCubeHierarchy EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:203:1: ruleCubeHierarchy EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeHierarchy_in_entryRuleCubeHierarchy367);
+            ruleCubeHierarchy();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeHierarchy374); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeHierarchy"
+
+
+    // $ANTLR start "ruleCubeHierarchy"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:210:1: ruleCubeHierarchy : ( ( rule__CubeHierarchy__Group__0 ) ) ;
+    public final void ruleCubeHierarchy() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:214:2: ( ( ( rule__CubeHierarchy__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:215:1: ( ( rule__CubeHierarchy__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:215:1: ( ( rule__CubeHierarchy__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:216:1: ( rule__CubeHierarchy__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:217:1: ( rule__CubeHierarchy__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:217:2: rule__CubeHierarchy__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeHierarchy__Group__0_in_ruleCubeHierarchy400);
+            rule__CubeHierarchy__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeHierarchy"
+
+
+    // $ANTLR start "entryRuleCubeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:229:1: entryRuleCubeEntity : ruleCubeEntity EOF ;
+    public final void entryRuleCubeEntity() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:230:1: ( ruleCubeEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:231:1: ruleCubeEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeEntity_in_entryRuleCubeEntity427);
+            ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeEntity434); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeEntity"
+
+
+    // $ANTLR start "ruleCubeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:238:1: ruleCubeEntity : ( ( rule__CubeEntity__Group__0 ) ) ;
+    public final void ruleCubeEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:242:2: ( ( ( rule__CubeEntity__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:243:1: ( ( rule__CubeEntity__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:243:1: ( ( rule__CubeEntity__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:244:1: ( rule__CubeEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:245:1: ( rule__CubeEntity__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:245:2: rule__CubeEntity__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeEntity__Group__0_in_ruleCubeEntity460);
+            rule__CubeEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeEntity"
+
+
+    // $ANTLR start "entryRuleCubeTypeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:257:1: entryRuleCubeTypeEntity : ruleCubeTypeEntity EOF ;
+    public final void entryRuleCubeTypeEntity() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:258:1: ( ruleCubeTypeEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:259:1: ruleCubeTypeEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeTypeEntity_in_entryRuleCubeTypeEntity487);
+            ruleCubeTypeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeTypeEntity494); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeTypeEntity"
+
+
+    // $ANTLR start "ruleCubeTypeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:266:1: ruleCubeTypeEntity : ( ( rule__CubeTypeEntity__Group__0 ) ) ;
+    public final void ruleCubeTypeEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:270:2: ( ( ( rule__CubeTypeEntity__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:271:1: ( ( rule__CubeTypeEntity__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:271:1: ( ( rule__CubeTypeEntity__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:272:1: ( rule__CubeTypeEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:273:1: ( rule__CubeTypeEntity__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:273:2: rule__CubeTypeEntity__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeTypeEntity__Group__0_in_ruleCubeTypeEntity520);
+            rule__CubeTypeEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeTypeEntity"
+
+
+    // $ANTLR start "entryRuleCubeDimensionEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:285:1: entryRuleCubeDimensionEntity : ruleCubeDimensionEntity EOF ;
+    public final void entryRuleCubeDimensionEntity() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:286:1: ( ruleCubeDimensionEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:287:1: ruleCubeDimensionEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimensionEntity_in_entryRuleCubeDimensionEntity547);
+            ruleCubeDimensionEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionEntity554); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimensionEntity"
+
+
+    // $ANTLR start "ruleCubeDimensionEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:294:1: ruleCubeDimensionEntity : ( ( rule__CubeDimensionEntity__Group__0 ) ) ;
+    public final void ruleCubeDimensionEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:298:2: ( ( ( rule__CubeDimensionEntity__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:299:1: ( ( rule__CubeDimensionEntity__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:299:1: ( ( rule__CubeDimensionEntity__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:300:1: ( rule__CubeDimensionEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:301:1: ( rule__CubeDimensionEntity__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:301:2: rule__CubeDimensionEntity__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeDimensionEntity__Group__0_in_ruleCubeDimensionEntity580);
+            rule__CubeDimensionEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimensionEntity"
+
+
+    // $ANTLR start "entryRuleCubeDimensionEntityEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:313:1: entryRuleCubeDimensionEntityEntity : ruleCubeDimensionEntityEntity EOF ;
+    public final void entryRuleCubeDimensionEntityEntity() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:314:1: ( ruleCubeDimensionEntityEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:315:1: ruleCubeDimensionEntityEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimensionEntityEntity_in_entryRuleCubeDimensionEntityEntity607);
+            ruleCubeDimensionEntityEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionEntityEntity614); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimensionEntityEntity"
+
+
+    // $ANTLR start "ruleCubeDimensionEntityEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:322:1: ruleCubeDimensionEntityEntity : ( ( rule__CubeDimensionEntityEntity__Group__0 ) ) ;
+    public final void ruleCubeDimensionEntityEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:326:2: ( ( ( rule__CubeDimensionEntityEntity__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:327:1: ( ( rule__CubeDimensionEntityEntity__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:327:1: ( ( rule__CubeDimensionEntityEntity__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:328:1: ( rule__CubeDimensionEntityEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:329:1: ( rule__CubeDimensionEntityEntity__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:329:2: rule__CubeDimensionEntityEntity__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeDimensionEntityEntity__Group__0_in_ruleCubeDimensionEntityEntity640);
+            rule__CubeDimensionEntityEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimensionEntityEntity"
+
+
+    // $ANTLR start "entryRuleCubeLevel"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:341:1: entryRuleCubeLevel : ruleCubeLevel EOF ;
+    public final void entryRuleCubeLevel() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:342:1: ( ruleCubeLevel EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:343:1: ruleCubeLevel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeLevel_in_entryRuleCubeLevel667);
+            ruleCubeLevel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeLevel674); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeLevel"
+
+
+    // $ANTLR start "ruleCubeLevel"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:350:1: ruleCubeLevel : ( ( rule__CubeLevel__Group__0 ) ) ;
+    public final void ruleCubeLevel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:354:2: ( ( ( rule__CubeLevel__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:355:1: ( ( rule__CubeLevel__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:355:1: ( ( rule__CubeLevel__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:356:1: ( rule__CubeLevel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:357:1: ( rule__CubeLevel__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:357:2: rule__CubeLevel__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeLevel__Group__0_in_ruleCubeLevel700);
+            rule__CubeLevel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevel"
+
+
+    // $ANTLR start "entryRuleCubeLevelProp"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:369:1: entryRuleCubeLevelProp : ruleCubeLevelProp EOF ;
+    public final void entryRuleCubeLevelProp() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:370:1: ( ruleCubeLevelProp EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:371:1: ruleCubeLevelProp EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeLevelProp_in_entryRuleCubeLevelProp727);
+            ruleCubeLevelProp();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeLevelProp734); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeLevelProp"
+
+
+    // $ANTLR start "ruleCubeLevelProp"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:378:1: ruleCubeLevelProp : ( ( rule__CubeLevelProp__Group__0 ) ) ;
+    public final void ruleCubeLevelProp() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:382:2: ( ( ( rule__CubeLevelProp__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:383:1: ( ( rule__CubeLevelProp__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:383:1: ( ( rule__CubeLevelProp__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:384:1: ( rule__CubeLevelProp__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:385:1: ( rule__CubeLevelProp__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:385:2: rule__CubeLevelProp__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeLevelProp__Group__0_in_ruleCubeLevelProp760);
+            rule__CubeLevelProp__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevelProp"
+
+
+    // $ANTLR start "entryRuleCubeMeasure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:397:1: entryRuleCubeMeasure : ruleCubeMeasure EOF ;
+    public final void entryRuleCubeMeasure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:398:1: ( ruleCubeMeasure EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:399:1: ruleCubeMeasure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeMeasure_in_entryRuleCubeMeasure787);
+            ruleCubeMeasure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeMeasure794); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeMeasure"
+
+
+    // $ANTLR start "ruleCubeMeasure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:406:1: ruleCubeMeasure : ( ( rule__CubeMeasure__Group__0 ) ) ;
+    public final void ruleCubeMeasure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:410:2: ( ( ( rule__CubeMeasure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:411:1: ( ( rule__CubeMeasure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:411:1: ( ( rule__CubeMeasure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:412:1: ( rule__CubeMeasure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:413:1: ( rule__CubeMeasure__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:413:2: rule__CubeMeasure__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeMeasure__Group__0_in_ruleCubeMeasure820);
+            rule__CubeMeasure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeMeasure"
+
+
+    // $ANTLR start "entryRuleImport"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:425:1: entryRuleImport : ruleImport EOF ;
+    public final void entryRuleImport() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:426:1: ( ruleImport EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:427:1: ruleImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getImportRule()); 
+            }
+            pushFollow(FOLLOW_ruleImport_in_entryRuleImport847);
+            ruleImport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getImportRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleImport854); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleImport"
+
+
+    // $ANTLR start "ruleImport"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:434:1: ruleImport : ( ( rule__Import__Group__0 ) ) ;
+    public final void ruleImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:438:2: ( ( ( rule__Import__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:439:1: ( ( rule__Import__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:439:1: ( ( rule__Import__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:440:1: ( rule__Import__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:441:1: ( rule__Import__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:441:2: rule__Import__Group__0
+            {
+            pushFollow(FOLLOW_rule__Import__Group__0_in_ruleImport880);
+            rule__Import__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getImportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleImport"
+
+
+    // $ANTLR start "entryRuleCubeQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:453:1: entryRuleCubeQualifiedNameWithWildCard : ruleCubeQualifiedNameWithWildCard EOF ;
+    public final void entryRuleCubeQualifiedNameWithWildCard() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:454:1: ( ruleCubeQualifiedNameWithWildCard EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:455:1: ruleCubeQualifiedNameWithWildCard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeQualifiedNameWithWildCardRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeQualifiedNameWithWildCard_in_entryRuleCubeQualifiedNameWithWildCard907);
+            ruleCubeQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeQualifiedNameWithWildCardRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeQualifiedNameWithWildCard914); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "ruleCubeQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:462:1: ruleCubeQualifiedNameWithWildCard : ( ( rule__CubeQualifiedNameWithWildCard__Group__0 ) ) ;
+    public final void ruleCubeQualifiedNameWithWildCard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:466:2: ( ( ( rule__CubeQualifiedNameWithWildCard__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:467:1: ( ( rule__CubeQualifiedNameWithWildCard__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:467:1: ( ( rule__CubeQualifiedNameWithWildCard__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:468:1: ( rule__CubeQualifiedNameWithWildCard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:469:1: ( rule__CubeQualifiedNameWithWildCard__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:469:2: rule__CubeQualifiedNameWithWildCard__Group__0
+            {
+            pushFollow(FOLLOW_rule__CubeQualifiedNameWithWildCard__Group__0_in_ruleCubeQualifiedNameWithWildCard940);
+            rule__CubeQualifiedNameWithWildCard__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "entryRuleQualifiedName"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:481:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    public final void entryRuleQualifiedName() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:482:1: ( ruleQualifiedName EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:483:1: ruleQualifiedName EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName967);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName974); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedName"
+
+
+    // $ANTLR start "ruleQualifiedName"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:490:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    public final void ruleQualifiedName() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:494:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:495:1: ( ( rule__QualifiedName__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:495:1: ( ( rule__QualifiedName__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:496:1: ( rule__QualifiedName__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:497:1: ( rule__QualifiedName__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:497:2: rule__QualifiedName__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName1000);
+            rule__QualifiedName__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleValidID"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:509:1: entryRuleValidID : ruleValidID EOF ;
+    public final void entryRuleValidID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:510:1: ( ruleValidID EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:511:1: ruleValidID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID1027);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getValidIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID1034); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleValidID"
+
+
+    // $ANTLR start "ruleValidID"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:518:1: ruleValidID : ( RULE_ID ) ;
+    public final void ruleValidID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:522:2: ( ( RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:523:1: ( RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:523:1: ( RULE_ID )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:524:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID1060); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleValidID"
+
+
+    // $ANTLR start "entryRuleLFQN"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:537:1: entryRuleLFQN : ruleLFQN EOF ;
+    public final void entryRuleLFQN() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:538:1: ( ruleLFQN EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:539:1: ruleLFQN EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNRule()); 
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_entryRuleLFQN1086);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleLFQN1093); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleLFQN"
+
+
+    // $ANTLR start "ruleLFQN"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:546:1: ruleLFQN : ( ( rule__LFQN__Group__0 ) ) ;
+    public final void ruleLFQN() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:550:2: ( ( ( rule__LFQN__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:551:1: ( ( rule__LFQN__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:551:1: ( ( rule__LFQN__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:552:1: ( rule__LFQN__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:553:1: ( rule__LFQN__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:553:2: rule__LFQN__Group__0
+            {
+            pushFollow(FOLLOW_rule__LFQN__Group__0_in_ruleLFQN1119);
+            rule__LFQN__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLFQN"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:565:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    public final void entryRuleTRANSLATABLEID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:566:1: ( ruleTRANSLATABLEID EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:567:1: ruleTRANSLATABLEID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID1146);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID1153); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLEID"
+
+
+    // $ANTLR start "ruleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:574:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    public final void ruleTRANSLATABLEID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:578:2: ( ( RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:579:1: ( RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:579:1: ( RULE_ID )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:580:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+            }
+            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID1179); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTRANSLATABLEID"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:593:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:594:1: ( ruleTRANSLATABLESTRING EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:595:1: ruleTRANSLATABLESTRING EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING1205);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING1212); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "ruleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:602:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    public final void ruleTRANSLATABLESTRING() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:606:2: ( ( RULE_STRING ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:607:1: ( RULE_STRING )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:607:1: ( RULE_STRING )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:608:1: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING1238); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "entryRuleXAnnotation"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:621:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    public final void entryRuleXAnnotation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:622:1: ( ruleXAnnotation EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:623:1: ruleXAnnotation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation1264);
+            ruleXAnnotation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation1271); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotation"
+
+
+    // $ANTLR start "ruleXAnnotation"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:630:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    public final void ruleXAnnotation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:634:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:635:1: ( ( rule__XAnnotation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:635:1: ( ( rule__XAnnotation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:636:1: ( rule__XAnnotation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:637:1: ( rule__XAnnotation__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:637:2: rule__XAnnotation__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation1297);
+            rule__XAnnotation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotation"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:649:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:650:1: ( ruleXAnnotationElementValuePair EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:651:1: ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair1324);
+            ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair1331); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "ruleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:658:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    public final void ruleXAnnotationElementValuePair() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:662:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:663:1: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:663:1: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:664:1: ( rule__XAnnotationElementValuePair__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:665:1: ( rule__XAnnotationElementValuePair__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:665:2: rule__XAnnotationElementValuePair__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair1357);
+            rule__XAnnotationElementValuePair__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:677:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:678:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:679:1: ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList1384);
+            ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList1391); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:686:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:690:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:691:1: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:691:1: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:692:1: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:693:1: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:693:2: rule__XAnnotationElementValueOrCommaList__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList1417);
+            rule__XAnnotationElementValueOrCommaList__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:705:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    public final void entryRuleXAnnotationElementValue() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:706:1: ( ruleXAnnotationElementValue EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:707:1: ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue1444);
+            ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue1451); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValue"
+
+
+    // $ANTLR start "ruleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:714:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:718:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:719:1: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:719:1: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:720:1: ( rule__XAnnotationElementValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:721:1: ( rule__XAnnotationElementValue__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:721:2: rule__XAnnotationElementValue__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue1477);
+            rule__XAnnotationElementValue__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationElementValue"
+
+
+    // $ANTLR start "entryRuleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:733:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:734:1: ( ruleXAnnotationOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:735:1: ruleXAnnotationOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression1504);
+            ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression1511); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAnnotationOrExpression"
+
+
+    // $ANTLR start "ruleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:742:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    public final void ruleXAnnotationOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:746:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:747:1: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:747:1: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:748:1: ( rule__XAnnotationOrExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:749:1: ( rule__XAnnotationOrExpression__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:749:2: rule__XAnnotationOrExpression__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression1537);
+            rule__XAnnotationOrExpression__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAnnotationOrExpression"
+
+
+    // $ANTLR start "entryRuleXExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:761:1: entryRuleXExpression : ruleXExpression EOF ;
+    public final void entryRuleXExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:762:1: ( ruleXExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:763:1: ruleXExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression1564);
+            ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression1571); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpression"
+
+
+    // $ANTLR start "ruleXExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:770:1: ruleXExpression : ( ruleXAssignment ) ;
+    public final void ruleXExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:774:2: ( ( ruleXAssignment ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:775:1: ( ruleXAssignment )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:775:1: ( ruleXAssignment )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:776:1: ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression1597);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpression"
+
+
+    // $ANTLR start "entryRuleXAssignment"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:789:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    public final void entryRuleXAssignment() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:790:1: ( ruleXAssignment EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:791:1: ruleXAssignment EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment1623);
+            ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment1630); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAssignment"
+
+
+    // $ANTLR start "ruleXAssignment"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:798:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    public final void ruleXAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:802:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:803:1: ( ( rule__XAssignment__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:803:1: ( ( rule__XAssignment__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:804:1: ( rule__XAssignment__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:805:1: ( rule__XAssignment__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:805:2: rule__XAssignment__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment1656);
+            rule__XAssignment__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAssignment"
+
+
+    // $ANTLR start "entryRuleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:817:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    public final void entryRuleOpSingleAssign() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:818:1: ( ruleOpSingleAssign EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:819:1: ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign1683);
+            ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpSingleAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign1690); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpSingleAssign"
+
+
+    // $ANTLR start "ruleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:826:1: ruleOpSingleAssign : ( '=' ) ;
+    public final void ruleOpSingleAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:830:2: ( ( '=' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:831:1: ( '=' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:831:1: ( '=' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:832:1: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+            }
+            match(input,13,FOLLOW_13_in_ruleOpSingleAssign1717); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpSingleAssign"
+
+
+    // $ANTLR start "entryRuleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:847:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    public final void entryRuleOpMultiAssign() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:848:1: ( ruleOpMultiAssign EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:849:1: ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign1745);
+            ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign1752); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMultiAssign"
+
+
+    // $ANTLR start "ruleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:856:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    public final void ruleOpMultiAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:860:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:861:1: ( ( rule__OpMultiAssign__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:861:1: ( ( rule__OpMultiAssign__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:862:1: ( rule__OpMultiAssign__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:863:1: ( rule__OpMultiAssign__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:863:2: rule__OpMultiAssign__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign1778);
+            rule__OpMultiAssign__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpMultiAssign"
+
+
+    // $ANTLR start "entryRuleXOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:875:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    public final void entryRuleXOrExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:876:1: ( ruleXOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:877:1: ruleXOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression1805);
+            ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression1812); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOrExpression"
+
+
+    // $ANTLR start "ruleXOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:884:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    public final void ruleXOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:888:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:889:1: ( ( rule__XOrExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:889:1: ( ( rule__XOrExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:890:1: ( rule__XOrExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:891:1: ( rule__XOrExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:891:2: rule__XOrExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression1838);
+            rule__XOrExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXOrExpression"
+
+
+    // $ANTLR start "entryRuleOpOr"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:903:1: entryRuleOpOr : ruleOpOr EOF ;
+    public final void entryRuleOpOr() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:904:1: ( ruleOpOr EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:905:1: ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr1865);
+            ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOrRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr1872); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOr"
+
+
+    // $ANTLR start "ruleOpOr"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:912:1: ruleOpOr : ( '||' ) ;
+    public final void ruleOpOr() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:916:2: ( ( '||' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:917:1: ( '||' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:917:1: ( '||' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:918:1: '||'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+            }
+            match(input,14,FOLLOW_14_in_ruleOpOr1899); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpOr"
+
+
+    // $ANTLR start "entryRuleXAndExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:933:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    public final void entryRuleXAndExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:934:1: ( ruleXAndExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:935:1: ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression1927);
+            ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression1934); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAndExpression"
+
+
+    // $ANTLR start "ruleXAndExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:942:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    public final void ruleXAndExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:946:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:947:1: ( ( rule__XAndExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:947:1: ( ( rule__XAndExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:948:1: ( rule__XAndExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:949:1: ( rule__XAndExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:949:2: rule__XAndExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression1960);
+            rule__XAndExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:961:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    public final void entryRuleOpAnd() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:962:1: ( ruleOpAnd EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:963:1: ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd1987);
+            ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAndRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd1994); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:970:1: ruleOpAnd : ( '&&' ) ;
+    public final void ruleOpAnd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:974:2: ( ( '&&' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:975:1: ( '&&' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:975:1: ( '&&' )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:976:1: '&&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+            }
+            match(input,15,FOLLOW_15_in_ruleOpAnd2021); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpAnd"
+
+
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:991:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    public final void entryRuleXEqualityExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:992:1: ( ruleXEqualityExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:993:1: ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression2049);
+            ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression2056); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1000:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    public final void ruleXEqualityExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1004:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1005:1: ( ( rule__XEqualityExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1005:1: ( ( rule__XEqualityExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1006:1: ( rule__XEqualityExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1007:1: ( rule__XEqualityExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1007:2: rule__XEqualityExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression2082);
+            rule__XEqualityExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXEqualityExpression"
+
+
+    // $ANTLR start "entryRuleOpEquality"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1019:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    public final void entryRuleOpEquality() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1020:1: ( ruleOpEquality EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1021:1: ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality2109);
+            ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpEqualityRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality2116); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1028:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    public final void ruleOpEquality() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1032:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1033:1: ( ( rule__OpEquality__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1033:1: ( ( rule__OpEquality__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1034:1: ( rule__OpEquality__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1035:1: ( rule__OpEquality__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1035:2: rule__OpEquality__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality2142);
+            rule__OpEquality__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1047:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    public final void entryRuleXRelationalExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1048:1: ( ruleXRelationalExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1049:1: ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression2169);
+            ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression2176); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1056:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    public final void ruleXRelationalExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1060:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1061:1: ( ( rule__XRelationalExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1061:1: ( ( rule__XRelationalExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1062:1: ( rule__XRelationalExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1063:1: ( rule__XRelationalExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1063:2: rule__XRelationalExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression2202);
+            rule__XRelationalExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1075:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    public final void entryRuleOpCompare() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1076:1: ( ruleOpCompare EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1077:1: ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare2229);
+            ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare2236); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpCompare"
+
+
+    // $ANTLR start "ruleOpCompare"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1084:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    public final void ruleOpCompare() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1088:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1089:1: ( ( rule__OpCompare__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1089:1: ( ( rule__OpCompare__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1090:1: ( rule__OpCompare__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1091:1: ( rule__OpCompare__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1091:2: rule__OpCompare__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare2262);
+            rule__OpCompare__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpCompare"
+
+
+    // $ANTLR start "entryRuleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1103:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1104:1: ( ruleXOtherOperatorExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1105:1: ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression2289);
+            ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression2296); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXOtherOperatorExpression"
+
+
+    // $ANTLR start "ruleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1112:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    public final void ruleXOtherOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1116:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1117:1: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1117:1: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1118:1: ( rule__XOtherOperatorExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1119:1: ( rule__XOtherOperatorExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1119:2: rule__XOtherOperatorExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression2322);
+            rule__XOtherOperatorExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXOtherOperatorExpression"
+
+
+    // $ANTLR start "entryRuleOpOther"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1131:1: entryRuleOpOther : ruleOpOther EOF ;
+    public final void entryRuleOpOther() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1132:1: ( ruleOpOther EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1133:1: ruleOpOther EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther2349);
+            ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther2356); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpOther"
+
+
+    // $ANTLR start "ruleOpOther"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1140:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    public final void ruleOpOther() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1144:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1145:1: ( ( rule__OpOther__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1145:1: ( ( rule__OpOther__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1146:1: ( rule__OpOther__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1147:1: ( rule__OpOther__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1147:2: rule__OpOther__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther2382);
+            rule__OpOther__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpOther"
+
+
+    // $ANTLR start "entryRuleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1159:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    public final void entryRuleXAdditiveExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1160:1: ( ruleXAdditiveExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1161:1: ruleXAdditiveExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression2409);
+            ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression2416); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXAdditiveExpression"
+
+
+    // $ANTLR start "ruleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1168:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    public final void ruleXAdditiveExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1172:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1173:1: ( ( rule__XAdditiveExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1173:1: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1174:1: ( rule__XAdditiveExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1175:1: ( rule__XAdditiveExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1175:2: rule__XAdditiveExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression2442);
+            rule__XAdditiveExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXAdditiveExpression"
+
+
+    // $ANTLR start "entryRuleOpAdd"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1187:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    public final void entryRuleOpAdd() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1188:1: ( ruleOpAdd EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1189:1: ruleOpAdd EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd2469);
+            ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAddRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd2476); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpAdd"
+
+
+    // $ANTLR start "ruleOpAdd"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1196:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    public final void ruleOpAdd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1200:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1201:1: ( ( rule__OpAdd__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1201:1: ( ( rule__OpAdd__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1202:1: ( rule__OpAdd__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1203:1: ( rule__OpAdd__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1203:2: rule__OpAdd__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd2502);
+            rule__OpAdd__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpAdd"
+
+
+    // $ANTLR start "entryRuleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1215:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1216:1: ( ruleXMultiplicativeExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1217:1: ruleXMultiplicativeExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression2529);
+            ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression2536); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
+
+
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1224:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    public final void ruleXMultiplicativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1228:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1229:1: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1229:1: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1230:1: ( rule__XMultiplicativeExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1231:1: ( rule__XMultiplicativeExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1231:2: rule__XMultiplicativeExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression2562);
+            rule__XMultiplicativeExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1243:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    public final void entryRuleOpMulti() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1244:1: ( ruleOpMulti EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1245:1: ruleOpMulti EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti2589);
+            ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti2596); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpMulti"
+
+
+    // $ANTLR start "ruleOpMulti"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1252:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    public final void ruleOpMulti() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1256:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1257:1: ( ( rule__OpMulti__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1257:1: ( ( rule__OpMulti__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1258:1: ( rule__OpMulti__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1259:1: ( rule__OpMulti__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1259:2: rule__OpMulti__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti2622);
+            rule__OpMulti__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpMulti"
+
+
+    // $ANTLR start "entryRuleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1271:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    public final void entryRuleXUnaryOperation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1272:1: ( ruleXUnaryOperation EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1273:1: ruleXUnaryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation2649);
+            ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation2656); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXUnaryOperation"
+
+
+    // $ANTLR start "ruleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1280:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    public final void ruleXUnaryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1284:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1285:1: ( ( rule__XUnaryOperation__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1285:1: ( ( rule__XUnaryOperation__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1286:1: ( rule__XUnaryOperation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1287:1: ( rule__XUnaryOperation__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1287:2: rule__XUnaryOperation__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation2682);
+            rule__XUnaryOperation__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXUnaryOperation"
+
+
+    // $ANTLR start "entryRuleOpUnary"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1299:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    public final void entryRuleOpUnary() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1300:1: ( ruleOpUnary EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1301:1: ruleOpUnary EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary2709);
+            ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpUnaryRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary2716); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpUnary"
+
+
+    // $ANTLR start "ruleOpUnary"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1308:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    public final void ruleOpUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1312:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1313:1: ( ( rule__OpUnary__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1313:1: ( ( rule__OpUnary__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1314:1: ( rule__OpUnary__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1315:1: ( rule__OpUnary__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1315:2: rule__OpUnary__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary2742);
+            rule__OpUnary__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpUnary"
+
+
+    // $ANTLR start "entryRuleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1327:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    public final void entryRuleXCastedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1328:1: ( ruleXCastedExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1329:1: ruleXCastedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression2769);
+            ruleXCastedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression2776); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCastedExpression"
+
+
+    // $ANTLR start "ruleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1336:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    public final void ruleXCastedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1340:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1341:1: ( ( rule__XCastedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1341:1: ( ( rule__XCastedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1342:1: ( rule__XCastedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1343:1: ( rule__XCastedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1343:2: rule__XCastedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression2802);
+            rule__XCastedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCastedExpression"
+
+
+    // $ANTLR start "entryRuleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1355:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    public final void entryRuleXPostfixOperation() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1356:1: ( ruleXPostfixOperation EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1357:1: ruleXPostfixOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation2829);
+            ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXPostfixOperation2836); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPostfixOperation"
+
+
+    // $ANTLR start "ruleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1364:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    public final void ruleXPostfixOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1368:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1369:1: ( ( rule__XPostfixOperation__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1369:1: ( ( rule__XPostfixOperation__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1370:1: ( rule__XPostfixOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1371:1: ( rule__XPostfixOperation__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1371:2: rule__XPostfixOperation__Group__0
+            {
+            pushFollow(FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation2862);
+            rule__XPostfixOperation__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXPostfixOperation"
+
+
+    // $ANTLR start "entryRuleOpPostfix"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1383:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    public final void entryRuleOpPostfix() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1384:1: ( ruleOpPostfix EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1385:1: ruleOpPostfix EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix2889);
+            ruleOpPostfix();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpPostfixRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpPostfix2896); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleOpPostfix"
+
+
+    // $ANTLR start "ruleOpPostfix"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1392:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    public final void ruleOpPostfix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1396:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1397:1: ( ( rule__OpPostfix__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1397:1: ( ( rule__OpPostfix__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1398:1: ( rule__OpPostfix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1399:1: ( rule__OpPostfix__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1399:2: rule__OpPostfix__Alternatives
+            {
+            pushFollow(FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix2922);
+            rule__OpPostfix__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleOpPostfix"
+
+
+    // $ANTLR start "entryRuleXMemberFeatureCall"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1411:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    public final void entryRuleXMemberFeatureCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1412:1: ( ruleXMemberFeatureCall EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1413:1: ruleXMemberFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall2949);
+            ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMemberFeatureCall2956); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXMemberFeatureCall"
+
+
+    // $ANTLR start "ruleXMemberFeatureCall"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1420:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    public final void ruleXMemberFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1424:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1425:1: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1425:1: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1426:1: ( rule__XMemberFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1427:1: ( rule__XMemberFeatureCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1427:2: rule__XMemberFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall2982);
+            rule__XMemberFeatureCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXMemberFeatureCall"
+
+
+    // $ANTLR start "entryRuleXPrimaryExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1439:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    public final void entryRuleXPrimaryExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1440:1: ( ruleXPrimaryExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1441:1: ruleXPrimaryExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression3009);
+            ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPrimaryExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXPrimaryExpression3016); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXPrimaryExpression"
+
+
+    // $ANTLR start "ruleXPrimaryExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1448:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    public final void ruleXPrimaryExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1452:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1453:1: ( ( rule__XPrimaryExpression__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1453:1: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1454:1: ( rule__XPrimaryExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1455:1: ( rule__XPrimaryExpression__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1455:2: rule__XPrimaryExpression__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression3042);
+            rule__XPrimaryExpression__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXPrimaryExpression"
+
+
+    // $ANTLR start "entryRuleXLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1467:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    public final void entryRuleXLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1468:1: ( ruleXLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1469:1: ruleXLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXLiteral_in_entryRuleXLiteral3069);
+            ruleXLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXLiteral3076); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXLiteral"
+
+
+    // $ANTLR start "ruleXLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1476:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    public final void ruleXLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1480:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1481:1: ( ( rule__XLiteral__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1481:1: ( ( rule__XLiteral__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1482:1: ( rule__XLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1483:1: ( rule__XLiteral__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1483:2: rule__XLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral3102);
+            rule__XLiteral__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXLiteral"
+
+
+    // $ANTLR start "entryRuleXCollectionLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1495:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    public final void entryRuleXCollectionLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1496:1: ( ruleXCollectionLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1497:1: ruleXCollectionLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral3129);
+            ruleXCollectionLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCollectionLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCollectionLiteral3136); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCollectionLiteral"
+
+
+    // $ANTLR start "ruleXCollectionLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1504:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    public final void ruleXCollectionLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1508:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1509:1: ( ( rule__XCollectionLiteral__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1509:1: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1510:1: ( rule__XCollectionLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1511:1: ( rule__XCollectionLiteral__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1511:2: rule__XCollectionLiteral__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral3162);
+            rule__XCollectionLiteral__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCollectionLiteral"
+
+
+    // $ANTLR start "entryRuleXSetLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1523:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    public final void entryRuleXSetLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1524:1: ( ruleXSetLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1525:1: ruleXSetLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral3189);
+            ruleXSetLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSetLiteral3196); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSetLiteral"
+
+
+    // $ANTLR start "ruleXSetLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1532:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    public final void ruleXSetLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1536:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1537:1: ( ( rule__XSetLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1537:1: ( ( rule__XSetLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1538:1: ( rule__XSetLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1539:1: ( rule__XSetLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1539:2: rule__XSetLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral3222);
+            rule__XSetLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSetLiteral"
+
+
+    // $ANTLR start "entryRuleXListLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1551:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    public final void entryRuleXListLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1552:1: ( ruleXListLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1553:1: ruleXListLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral3249);
+            ruleXListLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXListLiteral3256); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXListLiteral"
+
+
+    // $ANTLR start "ruleXListLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1560:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    public final void ruleXListLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1564:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1565:1: ( ( rule__XListLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1565:1: ( ( rule__XListLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1566:1: ( rule__XListLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1567:1: ( rule__XListLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1567:2: rule__XListLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral3282);
+            rule__XListLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXListLiteral"
+
+
+    // $ANTLR start "entryRuleXClosure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1579:1: entryRuleXClosure : ruleXClosure EOF ;
+    public final void entryRuleXClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1580:1: ( ruleXClosure EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1581:1: ruleXClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXClosure_in_entryRuleXClosure3309);
+            ruleXClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXClosure3316); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXClosure"
+
+
+    // $ANTLR start "ruleXClosure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1588:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    public final void ruleXClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1592:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1593:1: ( ( rule__XClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1593:1: ( ( rule__XClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1594:1: ( rule__XClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1595:1: ( rule__XClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1595:2: rule__XClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XClosure__Group__0_in_ruleXClosure3342);
+            rule__XClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXClosure"
+
+
+    // $ANTLR start "entryRuleXExpressionInClosure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1607:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    public final void entryRuleXExpressionInClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1608:1: ( ruleXExpressionInClosure EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1609:1: ruleXExpressionInClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure3369);
+            ruleXExpressionInClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionInClosure3376); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionInClosure"
+
+
+    // $ANTLR start "ruleXExpressionInClosure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1616:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    public final void ruleXExpressionInClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1620:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1621:1: ( ( rule__XExpressionInClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1621:1: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1622:1: ( rule__XExpressionInClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1623:1: ( rule__XExpressionInClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1623:2: rule__XExpressionInClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure3402);
+            rule__XExpressionInClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpressionInClosure"
+
+
+    // $ANTLR start "entryRuleXShortClosure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1635:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    public final void entryRuleXShortClosure() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1636:1: ( ruleXShortClosure EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1637:1: ruleXShortClosure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureRule()); 
+            }
+            pushFollow(FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure3429);
+            ruleXShortClosure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXShortClosure3436); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXShortClosure"
+
+
+    // $ANTLR start "ruleXShortClosure"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1644:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    public final void ruleXShortClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1648:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1649:1: ( ( rule__XShortClosure__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1649:1: ( ( rule__XShortClosure__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1650:1: ( rule__XShortClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1651:1: ( rule__XShortClosure__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1651:2: rule__XShortClosure__Group__0
+            {
+            pushFollow(FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure3462);
+            rule__XShortClosure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXShortClosure"
+
+
+    // $ANTLR start "entryRuleXParenthesizedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1663:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    public final void entryRuleXParenthesizedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1664:1: ( ruleXParenthesizedExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1665:1: ruleXParenthesizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression3489);
+            ruleXParenthesizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXParenthesizedExpression3496); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXParenthesizedExpression"
+
+
+    // $ANTLR start "ruleXParenthesizedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1672:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    public final void ruleXParenthesizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1676:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1677:1: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1677:1: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1678:1: ( rule__XParenthesizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1679:1: ( rule__XParenthesizedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1679:2: rule__XParenthesizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression3522);
+            rule__XParenthesizedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXParenthesizedExpression"
+
+
+    // $ANTLR start "entryRuleXIfExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1691:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    public final void entryRuleXIfExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1692:1: ( ruleXIfExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1693:1: ruleXIfExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression3549);
+            ruleXIfExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXIfExpression3556); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXIfExpression"
+
+
+    // $ANTLR start "ruleXIfExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1700:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    public final void ruleXIfExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1704:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1705:1: ( ( rule__XIfExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1705:1: ( ( rule__XIfExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1706:1: ( rule__XIfExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1707:1: ( rule__XIfExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1707:2: rule__XIfExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression3582);
+            rule__XIfExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXIfExpression"
+
+
+    // $ANTLR start "entryRuleXSwitchExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1719:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    public final void entryRuleXSwitchExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1720:1: ( ruleXSwitchExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1721:1: ruleXSwitchExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression3609);
+            ruleXSwitchExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSwitchExpression3616); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSwitchExpression"
+
+
+    // $ANTLR start "ruleXSwitchExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1728:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    public final void ruleXSwitchExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1732:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1733:1: ( ( rule__XSwitchExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1733:1: ( ( rule__XSwitchExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1734:1: ( rule__XSwitchExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1735:1: ( rule__XSwitchExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1735:2: rule__XSwitchExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression3642);
+            rule__XSwitchExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSwitchExpression"
+
+
+    // $ANTLR start "entryRuleXCasePart"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1747:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    public final void entryRuleXCasePart() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1748:1: ( ruleXCasePart EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1749:1: ruleXCasePart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCasePart_in_entryRuleXCasePart3669);
+            ruleXCasePart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCasePart3676); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCasePart"
+
+
+    // $ANTLR start "ruleXCasePart"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1756:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    public final void ruleXCasePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1760:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1761:1: ( ( rule__XCasePart__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1761:1: ( ( rule__XCasePart__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1762:1: ( rule__XCasePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1763:1: ( rule__XCasePart__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1763:2: rule__XCasePart__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart3702);
+            rule__XCasePart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCasePart"
+
+
+    // $ANTLR start "entryRuleXForLoopExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1775:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    public final void entryRuleXForLoopExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1776:1: ( ruleXForLoopExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1777:1: ruleXForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression3729);
+            ruleXForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXForLoopExpression3736); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXForLoopExpression"
+
+
+    // $ANTLR start "ruleXForLoopExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1784:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    public final void ruleXForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1788:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1789:1: ( ( rule__XForLoopExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1789:1: ( ( rule__XForLoopExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1790:1: ( rule__XForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1791:1: ( rule__XForLoopExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1791:2: rule__XForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression3762);
+            rule__XForLoopExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXBasicForLoopExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1803:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1804:1: ( ruleXBasicForLoopExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1805:1: ruleXBasicForLoopExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression3789);
+            ruleXBasicForLoopExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBasicForLoopExpression3796); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBasicForLoopExpression"
+
+
+    // $ANTLR start "ruleXBasicForLoopExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1812:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    public final void ruleXBasicForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1816:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1817:1: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1817:1: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1818:1: ( rule__XBasicForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1819:1: ( rule__XBasicForLoopExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1819:2: rule__XBasicForLoopExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression3822);
+            rule__XBasicForLoopExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBasicForLoopExpression"
+
+
+    // $ANTLR start "entryRuleXWhileExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1831:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    public final void entryRuleXWhileExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1832:1: ( ruleXWhileExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1833:1: ruleXWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression3849);
+            ruleXWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXWhileExpression3856); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXWhileExpression"
+
+
+    // $ANTLR start "ruleXWhileExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1840:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    public final void ruleXWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1844:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1845:1: ( ( rule__XWhileExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1845:1: ( ( rule__XWhileExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1846:1: ( rule__XWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1847:1: ( rule__XWhileExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1847:2: rule__XWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression3882);
+            rule__XWhileExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXWhileExpression"
+
+
+    // $ANTLR start "entryRuleXDoWhileExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1859:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    public final void entryRuleXDoWhileExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1860:1: ( ruleXDoWhileExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1861:1: ruleXDoWhileExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression3909);
+            ruleXDoWhileExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXDoWhileExpression3916); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXDoWhileExpression"
+
+
+    // $ANTLR start "ruleXDoWhileExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1868:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    public final void ruleXDoWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1872:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1873:1: ( ( rule__XDoWhileExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1873:1: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1874:1: ( rule__XDoWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1875:1: ( rule__XDoWhileExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1875:2: rule__XDoWhileExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression3942);
+            rule__XDoWhileExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXDoWhileExpression"
+
+
+    // $ANTLR start "entryRuleXBlockExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1887:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    public final void entryRuleXBlockExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1888:1: ( ruleXBlockExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1889:1: ruleXBlockExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression3969);
+            ruleXBlockExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBlockExpression3976); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBlockExpression"
+
+
+    // $ANTLR start "ruleXBlockExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1896:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    public final void ruleXBlockExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1900:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1901:1: ( ( rule__XBlockExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1901:1: ( ( rule__XBlockExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1902:1: ( rule__XBlockExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1903:1: ( rule__XBlockExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1903:2: rule__XBlockExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression4002);
+            rule__XBlockExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBlockExpression"
+
+
+    // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1915:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1916:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1917:1: ruleXExpressionOrVarDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration4029);
+            ruleXExpressionOrVarDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionOrVarDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration4036); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "ruleXExpressionOrVarDeclaration"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1924:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1928:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1929:1: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1929:1: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1930:1: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1931:1: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1931:2: rule__XExpressionOrVarDeclaration__Alternatives
+            {
+            pushFollow(FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration4062);
+            rule__XExpressionOrVarDeclaration__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXExpressionOrVarDeclaration"
+
+
+    // $ANTLR start "entryRuleXVariableDeclaration"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1943:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    public final void entryRuleXVariableDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1944:1: ( ruleXVariableDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1945:1: ruleXVariableDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration4089);
+            ruleXVariableDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXVariableDeclaration4096); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXVariableDeclaration"
+
+
+    // $ANTLR start "ruleXVariableDeclaration"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1952:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    public final void ruleXVariableDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1956:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1957:1: ( ( rule__XVariableDeclaration__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1957:1: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1958:1: ( rule__XVariableDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1959:1: ( rule__XVariableDeclaration__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1959:2: rule__XVariableDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration4122);
+            rule__XVariableDeclaration__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXVariableDeclaration"
+
+
+    // $ANTLR start "entryRuleJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1971:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    public final void entryRuleJvmFormalParameter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1972:1: ( ruleJvmFormalParameter EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1973:1: ruleJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter4149);
+            ruleJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmFormalParameter4156); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmFormalParameter"
+
+
+    // $ANTLR start "ruleJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1980:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    public final void ruleJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1984:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1985:1: ( ( rule__JvmFormalParameter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1985:1: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1986:1: ( rule__JvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1987:1: ( rule__JvmFormalParameter__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1987:2: rule__JvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter4182);
+            rule__JvmFormalParameter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleFullJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:1999:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2000:1: ( ruleFullJvmFormalParameter EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2001:1: ruleFullJvmFormalParameter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            pushFollow(FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter4209);
+            ruleFullJvmFormalParameter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFullJvmFormalParameter4216); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFullJvmFormalParameter"
+
+
+    // $ANTLR start "ruleFullJvmFormalParameter"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2008:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    public final void ruleFullJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2012:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2013:1: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2013:1: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2014:1: ( rule__FullJvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2015:1: ( rule__FullJvmFormalParameter__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2015:2: rule__FullJvmFormalParameter__Group__0
+            {
+            pushFollow(FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter4242);
+            rule__FullJvmFormalParameter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFullJvmFormalParameter"
+
+
+    // $ANTLR start "entryRuleXFeatureCall"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2027:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    public final void entryRuleXFeatureCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2028:1: ( ruleXFeatureCall EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2029:1: ruleXFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall4269);
+            ruleXFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXFeatureCall4276); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFeatureCall"
+
+
+    // $ANTLR start "ruleXFeatureCall"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2036:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    public final void ruleXFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2040:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2041:1: ( ( rule__XFeatureCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2041:1: ( ( rule__XFeatureCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2042:1: ( rule__XFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2043:1: ( rule__XFeatureCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2043:2: rule__XFeatureCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall4302);
+            rule__XFeatureCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXFeatureCall"
+
+
+    // $ANTLR start "entryRuleFeatureCallID"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2055:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    public final void entryRuleFeatureCallID() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2056:1: ( ruleFeatureCallID EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2057:1: ruleFeatureCallID EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID4329);
+            ruleFeatureCallID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFeatureCallIDRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleFeatureCallID4336); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleFeatureCallID"
+
+
+    // $ANTLR start "ruleFeatureCallID"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2064:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    public final void ruleFeatureCallID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2068:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2069:1: ( ( rule__FeatureCallID__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2069:1: ( ( rule__FeatureCallID__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2070:1: ( rule__FeatureCallID__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2071:1: ( rule__FeatureCallID__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2071:2: rule__FeatureCallID__Alternatives
+            {
+            pushFollow(FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID4362);
+            rule__FeatureCallID__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleFeatureCallID"
+
+
+    // $ANTLR start "entryRuleIdOrSuper"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2083:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    public final void entryRuleIdOrSuper() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2084:1: ( ruleIdOrSuper EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2085:1: ruleIdOrSuper EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperRule()); 
+            }
+            pushFollow(FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper4389);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIdOrSuperRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleIdOrSuper4396); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIdOrSuper"
+
+
+    // $ANTLR start "ruleIdOrSuper"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2092:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    public final void ruleIdOrSuper() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2096:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2097:1: ( ( rule__IdOrSuper__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2097:1: ( ( rule__IdOrSuper__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2098:1: ( rule__IdOrSuper__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2099:1: ( rule__IdOrSuper__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2099:2: rule__IdOrSuper__Alternatives
+            {
+            pushFollow(FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper4422);
+            rule__IdOrSuper__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleIdOrSuper"
+
+
+    // $ANTLR start "entryRuleXConstructorCall"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2111:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    public final void entryRuleXConstructorCall() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2112:1: ( ruleXConstructorCall EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2113:1: ruleXConstructorCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallRule()); 
+            }
+            pushFollow(FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall4449);
+            ruleXConstructorCall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXConstructorCall4456); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXConstructorCall"
+
+
+    // $ANTLR start "ruleXConstructorCall"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2120:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    public final void ruleXConstructorCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2124:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2125:1: ( ( rule__XConstructorCall__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2125:1: ( ( rule__XConstructorCall__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2126:1: ( rule__XConstructorCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2127:1: ( rule__XConstructorCall__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2127:2: rule__XConstructorCall__Group__0
+            {
+            pushFollow(FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall4482);
+            rule__XConstructorCall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXConstructorCall"
+
+
+    // $ANTLR start "entryRuleXBooleanLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2139:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    public final void entryRuleXBooleanLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2140:1: ( ruleXBooleanLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2141:1: ruleXBooleanLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral4509);
+            ruleXBooleanLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXBooleanLiteral4516); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXBooleanLiteral"
+
+
+    // $ANTLR start "ruleXBooleanLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2148:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    public final void ruleXBooleanLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2152:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2153:1: ( ( rule__XBooleanLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2153:1: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2154:1: ( rule__XBooleanLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2155:1: ( rule__XBooleanLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2155:2: rule__XBooleanLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral4542);
+            rule__XBooleanLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXBooleanLiteral"
+
+
+    // $ANTLR start "entryRuleXNullLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2167:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    public final void entryRuleXNullLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2168:1: ( ruleXNullLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2169:1: ruleXNullLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral4569);
+            ruleXNullLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXNullLiteral4576); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNullLiteral"
+
+
+    // $ANTLR start "ruleXNullLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2176:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    public final void ruleXNullLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2180:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2181:1: ( ( rule__XNullLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2181:1: ( ( rule__XNullLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2182:1: ( rule__XNullLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2183:1: ( rule__XNullLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2183:2: rule__XNullLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral4602);
+            rule__XNullLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXNullLiteral"
+
+
+    // $ANTLR start "entryRuleXNumberLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2195:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    public final void entryRuleXNumberLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2196:1: ( ruleXNumberLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2197:1: ruleXNumberLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral4629);
+            ruleXNumberLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXNumberLiteral4636); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXNumberLiteral"
+
+
+    // $ANTLR start "ruleXNumberLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2204:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    public final void ruleXNumberLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2208:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2209:1: ( ( rule__XNumberLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2209:1: ( ( rule__XNumberLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2210:1: ( rule__XNumberLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2211:1: ( rule__XNumberLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2211:2: rule__XNumberLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral4662);
+            rule__XNumberLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXNumberLiteral"
+
+
+    // $ANTLR start "entryRuleXStringLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2223:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    public final void entryRuleXStringLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2224:1: ( ruleXStringLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2225:1: ruleXStringLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral4689);
+            ruleXStringLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXStringLiteral4696); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXStringLiteral"
+
+
+    // $ANTLR start "ruleXStringLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2232:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    public final void ruleXStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2236:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2237:1: ( ( rule__XStringLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2237:1: ( ( rule__XStringLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2238:1: ( rule__XStringLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2239:1: ( rule__XStringLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2239:2: rule__XStringLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral4722);
+            rule__XStringLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXStringLiteral"
+
+
+    // $ANTLR start "entryRuleXTypeLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2251:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    public final void entryRuleXTypeLiteral() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2252:1: ( ruleXTypeLiteral EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2253:1: ruleXTypeLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralRule()); 
+            }
+            pushFollow(FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral4749);
+            ruleXTypeLiteral();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXTypeLiteral4756); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTypeLiteral"
+
+
+    // $ANTLR start "ruleXTypeLiteral"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2260:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    public final void ruleXTypeLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2264:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2265:1: ( ( rule__XTypeLiteral__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2265:1: ( ( rule__XTypeLiteral__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2266:1: ( rule__XTypeLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2267:1: ( rule__XTypeLiteral__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2267:2: rule__XTypeLiteral__Group__0
+            {
+            pushFollow(FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral4782);
+            rule__XTypeLiteral__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXTypeLiteral"
+
+
+    // $ANTLR start "entryRuleXThrowExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2279:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    public final void entryRuleXThrowExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2280:1: ( ruleXThrowExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2281:1: ruleXThrowExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression4809);
+            ruleXThrowExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXThrowExpression4816); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXThrowExpression"
+
+
+    // $ANTLR start "ruleXThrowExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2288:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    public final void ruleXThrowExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2292:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2293:1: ( ( rule__XThrowExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2293:1: ( ( rule__XThrowExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2294:1: ( rule__XThrowExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2295:1: ( rule__XThrowExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2295:2: rule__XThrowExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression4842);
+            rule__XThrowExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXThrowExpression"
+
+
+    // $ANTLR start "entryRuleXReturnExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2307:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    public final void entryRuleXReturnExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2308:1: ( ruleXReturnExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2309:1: ruleXReturnExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression4869);
+            ruleXReturnExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXReturnExpression4876); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXReturnExpression"
+
+
+    // $ANTLR start "ruleXReturnExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2316:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    public final void ruleXReturnExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2320:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2321:1: ( ( rule__XReturnExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2321:1: ( ( rule__XReturnExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2322:1: ( rule__XReturnExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2323:1: ( rule__XReturnExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2323:2: rule__XReturnExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression4902);
+            rule__XReturnExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXReturnExpression"
+
+
+    // $ANTLR start "entryRuleXTryCatchFinallyExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2335:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2336:1: ( ruleXTryCatchFinallyExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2337:1: ruleXTryCatchFinallyExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression4929);
+            ruleXTryCatchFinallyExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression4936); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "ruleXTryCatchFinallyExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2344:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2348:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2349:1: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2349:1: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2350:1: ( rule__XTryCatchFinallyExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2351:1: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2351:2: rule__XTryCatchFinallyExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression4962);
+            rule__XTryCatchFinallyExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXTryCatchFinallyExpression"
+
+
+    // $ANTLR start "entryRuleXSynchronizedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2363:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    public final void entryRuleXSynchronizedExpression() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2364:1: ( ruleXSynchronizedExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2365:1: ruleXSynchronizedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression4989);
+            ruleXSynchronizedExpression();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXSynchronizedExpression4996); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXSynchronizedExpression"
+
+
+    // $ANTLR start "ruleXSynchronizedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2372:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    public final void ruleXSynchronizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2376:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2377:1: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2377:1: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2378:1: ( rule__XSynchronizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2379:1: ( rule__XSynchronizedExpression__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2379:2: rule__XSynchronizedExpression__Group__0
+            {
+            pushFollow(FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression5022);
+            rule__XSynchronizedExpression__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXSynchronizedExpression"
+
+
+    // $ANTLR start "entryRuleXCatchClause"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2391:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    public final void entryRuleXCatchClause() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2392:1: ( ruleXCatchClause EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2393:1: ruleXCatchClause EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause5049);
+            ruleXCatchClause();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCatchClause5056); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXCatchClause"
+
+
+    // $ANTLR start "ruleXCatchClause"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2400:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    public final void ruleXCatchClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2404:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2405:1: ( ( rule__XCatchClause__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2405:1: ( ( rule__XCatchClause__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2406:1: ( rule__XCatchClause__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2407:1: ( rule__XCatchClause__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2407:2: rule__XCatchClause__Group__0
+            {
+            pushFollow(FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause5082);
+            rule__XCatchClause__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXCatchClause"
+
+
+    // $ANTLR start "entryRuleNumber"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2419:1: entryRuleNumber : ruleNumber EOF ;
+    public final void entryRuleNumber() throws RecognitionException {
+
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2423:1: ( ruleNumber EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2424:1: ruleNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberRule()); 
+            }
+            pushFollow(FOLLOW_ruleNumber_in_entryRuleNumber5114);
+            ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleNumber5121); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	myHiddenTokenState.restore();
+
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleNumber"
+
+
+    // $ANTLR start "ruleNumber"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2434:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    public final void ruleNumber() throws RecognitionException {
+
+        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2439:2: ( ( ( rule__Number__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2440:1: ( ( rule__Number__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2440:1: ( ( rule__Number__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2441:1: ( rule__Number__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2442:1: ( rule__Number__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2442:2: rule__Number__Alternatives
+            {
+            pushFollow(FOLLOW_rule__Number__Alternatives_in_ruleNumber5151);
+            rule__Number__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+            	myHiddenTokenState.restore();
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleNumber"
+
+
+    // $ANTLR start "entryRuleJvmTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2457:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    public final void entryRuleJvmTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2458:1: ( ruleJvmTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2459:1: ruleJvmTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference5180);
+            ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmTypeReference5187); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmTypeReference"
+
+
+    // $ANTLR start "ruleJvmTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2466:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    public final void ruleJvmTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2470:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2471:1: ( ( rule__JvmTypeReference__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2471:1: ( ( rule__JvmTypeReference__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2472:1: ( rule__JvmTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2473:1: ( rule__JvmTypeReference__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2473:2: rule__JvmTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference5213);
+            rule__JvmTypeReference__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmTypeReference"
+
+
+    // $ANTLR start "entryRuleArrayBrackets"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2485:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    public final void entryRuleArrayBrackets() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2486:1: ( ruleArrayBrackets EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2487:1: ruleArrayBrackets EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsRule()); 
+            }
+            pushFollow(FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets5240);
+            ruleArrayBrackets();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayBrackets5247); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleArrayBrackets"
+
+
+    // $ANTLR start "ruleArrayBrackets"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2494:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    public final void ruleArrayBrackets() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2498:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2499:1: ( ( rule__ArrayBrackets__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2499:1: ( ( rule__ArrayBrackets__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2500:1: ( rule__ArrayBrackets__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2501:1: ( rule__ArrayBrackets__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2501:2: rule__ArrayBrackets__Group__0
+            {
+            pushFollow(FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets5273);
+            rule__ArrayBrackets__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleArrayBrackets"
+
+
+    // $ANTLR start "entryRuleXFunctionTypeRef"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2513:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    public final void entryRuleXFunctionTypeRef() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2514:1: ( ruleXFunctionTypeRef EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2515:1: ruleXFunctionTypeRef EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            pushFollow(FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef5300);
+            ruleXFunctionTypeRef();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXFunctionTypeRef5307); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXFunctionTypeRef"
+
+
+    // $ANTLR start "ruleXFunctionTypeRef"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2522:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    public final void ruleXFunctionTypeRef() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2526:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2527:1: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2527:1: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2528:1: ( rule__XFunctionTypeRef__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2529:1: ( rule__XFunctionTypeRef__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2529:2: rule__XFunctionTypeRef__Group__0
+            {
+            pushFollow(FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef5333);
+            rule__XFunctionTypeRef__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXFunctionTypeRef"
+
+
+    // $ANTLR start "entryRuleJvmParameterizedTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2541:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2542:1: ( ruleJvmParameterizedTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2543:1: ruleJvmParameterizedTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference5360);
+            ruleJvmParameterizedTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference5367); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "ruleJvmParameterizedTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2550:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2554:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2555:1: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2555:1: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2556:1: ( rule__JvmParameterizedTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2557:1: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2557:2: rule__JvmParameterizedTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference5393);
+            rule__JvmParameterizedTypeReference__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmArgumentTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2569:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2570:1: ( ruleJvmArgumentTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2571:1: ruleJvmArgumentTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference5420);
+            ruleJvmArgumentTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmArgumentTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference5427); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "ruleJvmArgumentTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2578:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    public final void ruleJvmArgumentTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2582:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2583:1: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2583:1: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2584:1: ( rule__JvmArgumentTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2585:1: ( rule__JvmArgumentTypeReference__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2585:2: rule__JvmArgumentTypeReference__Alternatives
+            {
+            pushFollow(FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference5453);
+            rule__JvmArgumentTypeReference__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmArgumentTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmWildcardTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2597:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2598:1: ( ruleJvmWildcardTypeReference EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2599:1: ruleJvmWildcardTypeReference EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference5480);
+            ruleJvmWildcardTypeReference();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference5487); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "ruleJvmWildcardTypeReference"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2606:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    public final void ruleJvmWildcardTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2610:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2611:1: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2611:1: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2612:1: ( rule__JvmWildcardTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2613:1: ( rule__JvmWildcardTypeReference__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2613:2: rule__JvmWildcardTypeReference__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference5513);
+            rule__JvmWildcardTypeReference__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmUpperBound"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2625:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    public final void entryRuleJvmUpperBound() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2626:1: ( ruleJvmUpperBound EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2627:1: ruleJvmUpperBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound5540);
+            ruleJvmUpperBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBound5547); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBound"
+
+
+    // $ANTLR start "ruleJvmUpperBound"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2634:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    public final void ruleJvmUpperBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2638:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2639:1: ( ( rule__JvmUpperBound__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2639:1: ( ( rule__JvmUpperBound__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2640:1: ( rule__JvmUpperBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2641:1: ( rule__JvmUpperBound__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2641:2: rule__JvmUpperBound__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound5573);
+            rule__JvmUpperBound__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmUpperBound"
+
+
+    // $ANTLR start "entryRuleJvmUpperBoundAnded"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2653:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2654:1: ( ruleJvmUpperBoundAnded EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2655:1: ruleJvmUpperBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded5600);
+            ruleJvmUpperBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded5607); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "ruleJvmUpperBoundAnded"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2662:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmUpperBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2666:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2667:1: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2667:1: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2668:1: ( rule__JvmUpperBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2669:1: ( rule__JvmUpperBoundAnded__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2669:2: rule__JvmUpperBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded5633);
+            rule__JvmUpperBoundAnded__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmUpperBoundAnded"
+
+
+    // $ANTLR start "entryRuleJvmLowerBound"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2681:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    public final void entryRuleJvmLowerBound() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2682:1: ( ruleJvmLowerBound EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2683:1: ruleJvmLowerBound EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound5660);
+            ruleJvmLowerBound();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBound5667); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBound"
+
+
+    // $ANTLR start "ruleJvmLowerBound"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2690:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    public final void ruleJvmLowerBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2694:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2695:1: ( ( rule__JvmLowerBound__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2695:1: ( ( rule__JvmLowerBound__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2696:1: ( rule__JvmLowerBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2697:1: ( rule__JvmLowerBound__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2697:2: rule__JvmLowerBound__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound5693);
+            rule__JvmLowerBound__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmLowerBound"
+
+
+    // $ANTLR start "entryRuleJvmLowerBoundAnded"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2709:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2710:1: ( ruleJvmLowerBoundAnded EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2711:1: ruleJvmLowerBoundAnded EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            pushFollow(FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded5720);
+            ruleJvmLowerBoundAnded();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded5727); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "ruleJvmLowerBoundAnded"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2718:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmLowerBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2722:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2723:1: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2723:1: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2724:1: ( rule__JvmLowerBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2725:1: ( rule__JvmLowerBoundAnded__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2725:2: rule__JvmLowerBoundAnded__Group__0
+            {
+            pushFollow(FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded5753);
+            rule__JvmLowerBoundAnded__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleJvmLowerBoundAnded"
+
+
+    // $ANTLR start "entryRuleQualifiedNameWithWildcard"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2739:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2740:1: ( ruleQualifiedNameWithWildcard EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2741:1: ruleQualifiedNameWithWildcard EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard5782);
+            ruleQualifiedNameWithWildcard();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard5789); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "ruleQualifiedNameWithWildcard"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2748:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2752:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2753:1: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2753:1: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2754:1: ( rule__QualifiedNameWithWildcard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2755:1: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2755:2: rule__QualifiedNameWithWildcard__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard5815);
+            rule__QualifiedNameWithWildcard__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedNameWithWildcard"
+
+
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2769:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    public final void entryRuleXImportDeclaration() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2770:1: ( ruleXImportDeclaration EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2771:1: ruleXImportDeclaration EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration5844);
+            ruleXImportDeclaration();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXImportDeclaration5851); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleXImportDeclaration"
+
+
+    // $ANTLR start "ruleXImportDeclaration"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2778:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    public final void ruleXImportDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2782:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2783:1: ( ( rule__XImportDeclaration__Group__0 ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2783:1: ( ( rule__XImportDeclaration__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2784:1: ( rule__XImportDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2785:1: ( rule__XImportDeclaration__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2785:2: rule__XImportDeclaration__Group__0
+            {
+            pushFollow(FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration5877);
+            rule__XImportDeclaration__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleXImportDeclaration"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2797:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2798:1: ( ruleQualifiedNameInStaticImport EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2799:1: ruleQualifiedNameInStaticImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport5904);
+            ruleQualifiedNameInStaticImport();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport5911); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleQualifiedNameInStaticImport"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2806:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2810:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2811:1: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2811:1: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2812:1: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2812:1: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2813:1: ( rule__QualifiedNameInStaticImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2814:1: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2814:2: rule__QualifiedNameInStaticImport__Group__0
+            {
+            pushFollow(FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport5939);
+            rule__QualifiedNameInStaticImport__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2817:1: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2818:1: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2819:1: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==RULE_ID) ) {
+                    int LA1_2 = input.LA(2);
+
+                    if ( (LA1_2==44) ) {
+                        alt1=1;
+                    }
+
+
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2819:2: rule__QualifiedNameInStaticImport__Group__0
+            	    {
+            	    pushFollow(FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport5951);
+            	    rule__QualifiedNameInStaticImport__Group__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleCubeAggregatorEnum"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2833:1: ruleCubeAggregatorEnum : ( ( rule__CubeAggregatorEnum__Alternatives ) ) ;
+    public final void ruleCubeAggregatorEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2837:1: ( ( ( rule__CubeAggregatorEnum__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2838:1: ( ( rule__CubeAggregatorEnum__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2838:1: ( ( rule__CubeAggregatorEnum__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2839:1: ( rule__CubeAggregatorEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2840:1: ( rule__CubeAggregatorEnum__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2840:2: rule__CubeAggregatorEnum__Alternatives
+            {
+            pushFollow(FOLLOW_rule__CubeAggregatorEnum__Alternatives_in_ruleCubeAggregatorEnum5991);
+            rule__CubeAggregatorEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeAggregatorEnum"
+
+
+    // $ANTLR start "ruleCubeLevelPropType"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2852:1: ruleCubeLevelPropType : ( ( rule__CubeLevelPropType__Alternatives ) ) ;
+    public final void ruleCubeLevelPropType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2856:1: ( ( ( rule__CubeLevelPropType__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2857:1: ( ( rule__CubeLevelPropType__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2857:1: ( ( rule__CubeLevelPropType__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2858:1: ( rule__CubeLevelPropType__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2859:1: ( rule__CubeLevelPropType__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2859:2: rule__CubeLevelPropType__Alternatives
+            {
+            pushFollow(FOLLOW_rule__CubeLevelPropType__Alternatives_in_ruleCubeLevelPropType6027);
+            rule__CubeLevelPropType__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevelPropType"
+
+
+    // $ANTLR start "ruleCubeLevelLevelType"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2871:1: ruleCubeLevelLevelType : ( ( rule__CubeLevelLevelType__Alternatives ) ) ;
+    public final void ruleCubeLevelLevelType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2875:1: ( ( ( rule__CubeLevelLevelType__Alternatives ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2876:1: ( ( rule__CubeLevelLevelType__Alternatives ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2876:1: ( ( rule__CubeLevelLevelType__Alternatives ) )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2877:1: ( rule__CubeLevelLevelType__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); 
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2878:1: ( rule__CubeLevelLevelType__Alternatives )
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2878:2: rule__CubeLevelLevelType__Alternatives
+            {
+            pushFollow(FOLLOW_rule__CubeLevelLevelType__Alternatives_in_ruleCubeLevelLevelType6063);
+            rule__CubeLevelLevelType__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevelLevelType"
+
+
+    // $ANTLR start "rule__CubeLevel__Alternatives_6"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2889:1: rule__CubeLevel__Alternatives_6 : ( ( ';' ) | ( ( rule__CubeLevel__Group_6_1__0 ) ) );
+    public final void rule__CubeLevel__Alternatives_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2893:1: ( ( ';' ) | ( ( rule__CubeLevel__Group_6_1__0 ) ) )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==16) ) {
+                alt2=1;
+            }
+            else if ( (LA2_0==75) ) {
+                alt2=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2894:1: ( ';' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2894:1: ( ';' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2895:1: ';'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0()); 
+                    }
+                    match(input,16,FOLLOW_16_in_rule__CubeLevel__Alternatives_66099); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2902:6: ( ( rule__CubeLevel__Group_6_1__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2902:6: ( ( rule__CubeLevel__Group_6_1__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2903:1: ( rule__CubeLevel__Group_6_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelAccess().getGroup_6_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2904:1: ( rule__CubeLevel__Group_6_1__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2904:2: rule__CubeLevel__Group_6_1__0
+                    {
+                    pushFollow(FOLLOW_rule__CubeLevel__Group_6_1__0_in_rule__CubeLevel__Alternatives_66118);
+                    rule__CubeLevel__Group_6_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelAccess().getGroup_6_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Alternatives_6"
+
+
+    // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2913: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 {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2917:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt3=2;
+            alt3 = dfa3.predict(input);
+            switch (alt3) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2918:1: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2918:1: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2919:1: ( rule__XAnnotation__Group_3_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2920:1: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2920:2: rule__XAnnotation__Group_3_1_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_16151);
+                    rule__XAnnotation__Group_3_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2924:6: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2924:6: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2925:1: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2926:1: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2926:2: rule__XAnnotation__ValueAssignment_3_1_1
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_16169);
+                    rule__XAnnotation__ValueAssignment_3_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Alternatives_3_1"
+
+
+    // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2935: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 {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2939:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt4=2;
+            alt4 = dfa4.predict(input);
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2940:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2940:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2941:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2942:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2942:2: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives6202);
+                    rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2946:6: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2946:6: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2947:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2948:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2948:2: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives6220);
+                    rule__XAnnotationElementValueOrCommaList__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValueOrCommaList__Alternatives"
+
+
+    // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2957:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2961:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt5=2;
+            alt5 = dfa5.predict(input);
+            switch (alt5) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2962:1: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2962:1: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2963:1: ( rule__XAnnotationElementValue__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2964:1: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2964:2: rule__XAnnotationElementValue__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives6253);
+                    rule__XAnnotationElementValue__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2968:6: ( ruleXAnnotationOrExpression )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2968:6: ( ruleXAnnotationOrExpression )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2969:1: ruleXAnnotationOrExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives6271);
+                    ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationElementValue__Alternatives"
+
+
+    // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2979:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2983:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==87) ) {
+                alt6=1;
+            }
+            else if ( ((LA6_0>=RULE_ID && LA6_0<=RULE_DECIMAL)||LA6_0==28||(LA6_0>=35 && LA6_0<=36)||LA6_0==41||(LA6_0>=46 && LA6_0<=51)||LA6_0==75||LA6_0==88||(LA6_0>=92 && LA6_0<=93)||LA6_0==96||LA6_0==98||(LA6_0>=102 && LA6_0<=110)||LA6_0==112||LA6_0==130) ) {
+                alt6=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2984:1: ( ruleXAnnotation )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2984:1: ( ruleXAnnotation )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2985:1: ruleXAnnotation
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives6303);
+                    ruleXAnnotation();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2990:6: ( ruleXExpression )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2990:6: ( ruleXExpression )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:2991:1: ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives6320);
+                    ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotationOrExpression__Alternatives"
+
+
+    // $ANTLR start "rule__XAssignment__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3001: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 {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3005:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt7=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA7_1 = input.LA(2);
+
+                if ( (LA7_1==EOF||(LA7_1>=RULE_ID && LA7_1<=RULE_DECIMAL)||(LA7_1>=14 && LA7_1<=51)||(LA7_1>=75 && LA7_1<=76)||(LA7_1>=88 && LA7_1<=113)||(LA7_1>=126 && LA7_1<=127)||(LA7_1>=129 && LA7_1<=130)) ) {
+                    alt7=2;
+                }
+                else if ( (LA7_1==13) ) {
+                    alt7=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 7, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 46:
+                {
+                int LA7_2 = input.LA(2);
+
+                if ( (LA7_2==EOF||(LA7_2>=RULE_ID && LA7_2<=RULE_DECIMAL)||(LA7_2>=14 && LA7_2<=51)||(LA7_2>=75 && LA7_2<=76)||(LA7_2>=88 && LA7_2<=113)||(LA7_2>=126 && LA7_2<=127)||(LA7_2>=129 && LA7_2<=130)) ) {
+                    alt7=2;
+                }
+                else if ( (LA7_2==13) ) {
+                    alt7=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 7, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 47:
+                {
+                int LA7_3 = input.LA(2);
+
+                if ( (LA7_3==EOF||(LA7_3>=RULE_ID && LA7_3<=RULE_DECIMAL)||(LA7_3>=14 && LA7_3<=51)||(LA7_3>=75 && LA7_3<=76)||(LA7_3>=88 && LA7_3<=113)||(LA7_3>=126 && LA7_3<=127)||(LA7_3>=129 && LA7_3<=130)) ) {
+                    alt7=2;
+                }
+                else if ( (LA7_3==13) ) {
+                    alt7=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 7, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 48:
+                {
+                int LA7_4 = input.LA(2);
+
+                if ( (LA7_4==EOF||(LA7_4>=RULE_ID && LA7_4<=RULE_DECIMAL)||(LA7_4>=14 && LA7_4<=51)||(LA7_4>=75 && LA7_4<=76)||(LA7_4>=88 && LA7_4<=113)||(LA7_4>=126 && LA7_4<=127)||(LA7_4>=129 && LA7_4<=130)) ) {
+                    alt7=2;
+                }
+                else if ( (LA7_4==13) ) {
+                    alt7=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 7, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 49:
+                {
+                int LA7_5 = input.LA(2);
+
+                if ( (LA7_5==EOF||(LA7_5>=RULE_ID && LA7_5<=RULE_DECIMAL)||(LA7_5>=14 && LA7_5<=51)||(LA7_5>=75 && LA7_5<=76)||(LA7_5>=88 && LA7_5<=113)||(LA7_5>=126 && LA7_5<=127)||(LA7_5>=129 && LA7_5<=130)) ) {
+                    alt7=2;
+                }
+                else if ( (LA7_5==13) ) {
+                    alt7=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 7, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_STRING:
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+            case 28:
+            case 35:
+            case 36:
+            case 41:
+            case 50:
+            case 51:
+            case 75:
+            case 88:
+            case 92:
+            case 93:
+            case 96:
+            case 98:
+            case 102:
+            case 103:
+            case 104:
+            case 105:
+            case 106:
+            case 107:
+            case 108:
+            case 109:
+            case 110:
+            case 112:
+            case 130:
+                {
+                alt7=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3006:1: ( ( rule__XAssignment__Group_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3006:1: ( ( rule__XAssignment__Group_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3007:1: ( rule__XAssignment__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3008:1: ( rule__XAssignment__Group_0__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3008:2: rule__XAssignment__Group_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives6352);
+                    rule__XAssignment__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3012:6: ( ( rule__XAssignment__Group_1__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3012:6: ( ( rule__XAssignment__Group_1__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3013:1: ( rule__XAssignment__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3014:1: ( rule__XAssignment__Group_1__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3014:2: rule__XAssignment__Group_1__0
+                    {
+                    pushFollow(FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives6370);
+                    rule__XAssignment__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAssignment__Alternatives"
+
+
+    // $ANTLR start "rule__OpMultiAssign__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3023: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 {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3027:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt8=7;
+            switch ( input.LA(1) ) {
+            case 17:
+                {
+                alt8=1;
+                }
+                break;
+            case 18:
+                {
+                alt8=2;
+                }
+                break;
+            case 19:
+                {
+                alt8=3;
+                }
+                break;
+            case 20:
+                {
+                alt8=4;
+                }
+                break;
+            case 21:
+                {
+                alt8=5;
+                }
+                break;
+            case 28:
+                {
+                alt8=6;
+                }
+                break;
+            case 27:
+                {
+                alt8=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3028:1: ( '+=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3028:1: ( '+=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3029:1: '+='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,17,FOLLOW_17_in_rule__OpMultiAssign__Alternatives6404); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3036:6: ( '-=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3036:6: ( '-=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3037:1: '-='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+                    match(input,18,FOLLOW_18_in_rule__OpMultiAssign__Alternatives6424); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3044:6: ( '*=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3044:6: ( '*=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3045:1: '*='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+                    match(input,19,FOLLOW_19_in_rule__OpMultiAssign__Alternatives6444); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3052:6: ( '/=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3052:6: ( '/=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3053:1: '/='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+                    match(input,20,FOLLOW_20_in_rule__OpMultiAssign__Alternatives6464); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3060:6: ( '%=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3060:6: ( '%=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3061:1: '%='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+                    match(input,21,FOLLOW_21_in_rule__OpMultiAssign__Alternatives6484); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3068:6: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3068:6: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3069:1: ( rule__OpMultiAssign__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3070:1: ( rule__OpMultiAssign__Group_5__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3070:2: rule__OpMultiAssign__Group_5__0
+                    {
+                    pushFollow(FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives6503);
+                    rule__OpMultiAssign__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3074:6: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3074:6: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3075:1: ( rule__OpMultiAssign__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3076:1: ( rule__OpMultiAssign__Group_6__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3076:2: rule__OpMultiAssign__Group_6__0
+                    {
+                    pushFollow(FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives6521);
+                    rule__OpMultiAssign__Group_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpMultiAssign__Alternatives"
+
+
+    // $ANTLR start "rule__OpEquality__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3085:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    public final void rule__OpEquality__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3089:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt9=4;
+            switch ( input.LA(1) ) {
+            case 22:
+                {
+                alt9=1;
+                }
+                break;
+            case 23:
+                {
+                alt9=2;
+                }
+                break;
+            case 24:
+                {
+                alt9=3;
+                }
+                break;
+            case 25:
+                {
+                alt9=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 9, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3090:1: ( '==' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3090:1: ( '==' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3091:1: '=='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,22,FOLLOW_22_in_rule__OpEquality__Alternatives6555); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3098:6: ( '!=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3098:6: ( '!=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3099:1: '!='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                    }
+                    match(input,23,FOLLOW_23_in_rule__OpEquality__Alternatives6575); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3106:6: ( '===' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3106:6: ( '===' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3107:1: '==='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                    }
+                    match(input,24,FOLLOW_24_in_rule__OpEquality__Alternatives6595); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3114:6: ( '!==' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3114:6: ( '!==' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3115:1: '!=='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+                    }
+                    match(input,25,FOLLOW_25_in_rule__OpEquality__Alternatives6615); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpEquality__Alternatives"
+
+
+    // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3127: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 {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3131:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==94) ) {
+                alt10=1;
+            }
+            else if ( ((LA10_0>=26 && LA10_0<=28)) ) {
+                alt10=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3132:1: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3132:1: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3133:1: ( rule__XRelationalExpression__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3134:1: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3134:2: rule__XRelationalExpression__Group_1_0__0
+                    {
+                    pushFollow(FOLLOW_rule__XRelationalExpression__Group_1_0__0_in_rule__XRelationalExpression__Alternatives_16649);
+                    rule__XRelationalExpression__Group_1_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3138:6: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3138:6: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3139:1: ( rule__XRelationalExpression__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3140:1: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3140:2: rule__XRelationalExpression__Group_1_1__0
+                    {
+                    pushFollow(FOLLOW_rule__XRelationalExpression__Group_1_1__0_in_rule__XRelationalExpression__Alternatives_16667);
+                    rule__XRelationalExpression__Group_1_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XRelationalExpression__Alternatives_1"
+
+
+    // $ANTLR start "rule__OpCompare__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3149:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    public final void rule__OpCompare__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3153:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt11=4;
+            switch ( input.LA(1) ) {
+            case 26:
+                {
+                alt11=1;
+                }
+                break;
+            case 28:
+                {
+                int LA11_2 = input.LA(2);
+
+                if ( (LA11_2==13) ) {
+                    alt11=2;
+                }
+                else if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_DECIMAL)||LA11_2==28||(LA11_2>=35 && LA11_2<=36)||LA11_2==41||(LA11_2>=46 && LA11_2<=51)||LA11_2==75||LA11_2==88||(LA11_2>=92 && LA11_2<=93)||LA11_2==96||LA11_2==98||(LA11_2>=102 && LA11_2<=110)||LA11_2==112||LA11_2==130) ) {
+                    alt11=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 11, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 27:
+                {
+                alt11=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt11) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3154:1: ( '>=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3154:1: ( '>=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3155:1: '>='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,26,FOLLOW_26_in_rule__OpCompare__Alternatives6701); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3162:6: ( ( rule__OpCompare__Group_1__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3162:6: ( ( rule__OpCompare__Group_1__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3163:1: ( rule__OpCompare__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGroup_1()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3164:1: ( rule__OpCompare__Group_1__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3164:2: rule__OpCompare__Group_1__0
+                    {
+                    pushFollow(FOLLOW_rule__OpCompare__Group_1__0_in_rule__OpCompare__Alternatives6720);
+                    rule__OpCompare__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGroup_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3168:6: ( '>' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3168:6: ( '>' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3169:1: '>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                    }
+                    match(input,27,FOLLOW_27_in_rule__OpCompare__Alternatives6739); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3176:6: ( '<' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3176:6: ( '<' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3177:1: '<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+                    }
+                    match(input,28,FOLLOW_28_in_rule__OpCompare__Alternatives6759); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__OpCompare__Alternatives"
+
+
+    // $ANTLR start "rule__OpOther__Alternatives"
+    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3189: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 {
+            // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3193:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt12=9;
+            alt12 = dfa12.predict(input);
+            switch (alt12) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3194:1: ( '->' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3194:1: ( '->' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3195:1: '->'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                    }
+                    match(input,29,FOLLOW_29_in_rule__OpOther__Alternatives6794); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3202:6: ( '..<' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3202:6: ( '..<' )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3203:1: '..<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                    }
+                    match(input,30,FOLLOW_30_in_rule__OpOther__Alternatives6814); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3210:6: ( ( rule__OpOther__Group_2__0 ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3210:6: ( ( rule__OpOther__Group_2__0 ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3211:1: ( rule__OpOther__Group_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_2()); 
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3212:1: ( rule__OpOther__Group_2__0 )
+                    // ../org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/antlr/internal/InternalCubeDSL.g:3212:2: rule__OpOther__Group_2__0
+                    {
+                    pushFollow(FOLLOW_rule__OpOther__Group_2__0_in_rule__OpOther__Alternatives6833);
+                    rule__OpOther__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getGroup_2()); 
+                    }
+
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/internal/CubeDSLActivator.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/internal/CubeDSLActivator.java
new file mode 100644
index 0000000..411b0b0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/internal/CubeDSLActivator.java
@@ -0,0 +1,106 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class CubeDSLActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL = "org.eclipse.osbp.xtext.cubedsl.CubeDSL";
+	
+	private static final Logger logger = Logger.getLogger(CubeDSLActivator.class);
+	
+	private static CubeDSLActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static CubeDSLActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+
+	protected Module getRuntimeModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.cubedsl.CubeDSLRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL.equals(grammar)) {
+			return new org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLDocumentationTranslator.java
new file mode 100644
index 0000000..6b673f0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLDocumentationTranslator.java
@@ -0,0 +1,32 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl.ui;
+
+import java.util.ResourceBundle;
+
+import org.eclipse.osbp.utils.constants.GeneratorConstants;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+
+public class CubeDSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
+		 
+     private static CubeDSLDocumentationTranslator INSTANCE = new CubeDSLDocumentationTranslator();
+ 
+     public static BasicDSLDocumentationTranslator instance() {
+         return INSTANCE;
+     }
+     
+     @Override
+     protected ResourceBundle getResourceBundle() {
+         return java.util.ResourceBundle.getBundle(GeneratorConstants.I18N_RESOURCE_FULL_BUNDLE_NAME, getLocale(), getClass().getClassLoader());
+     }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHover.java b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHover.java
new file mode 100644
index 0000000..5c3e6fa
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHover.java
@@ -0,0 +1,25 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl.ui;
+
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHover;
+
+public class CubeDSLEObjectHover extends BasicDSLEObjectHover {
+	
+	@Override
+	public IEObjectHoverProvider getHoverProvider() {
+		return CubeDSLEObjectHoverProvider.instance();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHoverDocumentationProvider.java
new file mode 100644
index 0000000..914b099
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHoverDocumentationProvider.java
@@ -0,0 +1,35 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl.ui;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverDocumentationProvider;
+
+public class CubeDSLEObjectHoverDocumentationProvider extends BasicDSLEObjectHoverDocumentationProvider {
+	 
+    private static CubeDSLEObjectHoverDocumentationProvider INSTANCE;
+
+    public static CubeDSLEObjectHoverDocumentationProvider instance() {
+        return INSTANCE;
+    }
+
+    public CubeDSLEObjectHoverDocumentationProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    @Override
+    protected BasicDSLDocumentationTranslator getTranslator() {
+        return CubeDSLDocumentationTranslator.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHoverProvider.java b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHoverProvider.java
new file mode 100644
index 0000000..3681132
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLEObjectHoverProvider.java
@@ -0,0 +1,36 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl.ui;
+
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider;
+
+public class CubeDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
+	 
+    private static CubeDSLEObjectHoverProvider INSTANCE;
+
+    public static CubeDSLEObjectHoverProvider instance() {
+        return INSTANCE;
+    }
+
+    public CubeDSLEObjectHoverProvider() {
+        super();
+        INSTANCE = this;
+    }
+    
+    @Override
+    public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
+        return CubeDSLEObjectHoverDocumentationProvider.instance();
+    }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLUiModule.java b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLUiModule.java
new file mode 100644
index 0000000..8347626
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLUiModule.java
@@ -0,0 +1,51 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.cubedsl.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHover;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class CubeDSLUiModule extends org.eclipse.osbp.xtext.cubedsl.ui.AbstractCubeDSLUiModule {
+	
+	private static Logger LOGGER = LoggerFactory.getLogger(CubeDSLUiModule.class);
+	
+	public CubeDSLUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	    BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
+	}
+	
+	@Override
+	public Class<? extends IEObjectHover> bindIEObjectHover() {
+	     return CubeDSLEObjectHover.class;
+	}
+	
+	@Override
+	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
+	     return CubeDSLEObjectHoverProvider.class;
+	}
+	
+	@Override
+	public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
+	      return CubeDSLEObjectHoverDocumentationProvider.class;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/CubeDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/CubeDSLProposalProvider.xtend
new file mode 100644
index 0000000..94dce14
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/CubeDSLProposalProvider.xtend
@@ -0,0 +1,103 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.ui.contentassist
+
+import com.google.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.jface.viewers.StyledString
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension
+import org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLDocumentationTranslator
+import org.eclipse.xtext.Keyword
+import org.eclipse.xtext.RuleCall
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+class CubeDSLProposalProvider extends AbstractCubeDSLProposalProvider {
+	
+	@Inject TerminalsProposalProvider provider
+	@Inject BasicDSLProposalProviderHelper providerHelper
+	
+	val private final String LEVEL_TYPE = "levelType=";
+
+	override protected StyledString getKeywordDisplayString(Keyword keyword) {
+		return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, CubeDSLDocumentationTranslator.instance())
+	}
+
+	/**
+	 * This method decided which proposals will be valid. 
+	 */
+	override protected boolean isValidProposal(String proposal, String prefix, ContentAssistContext context) {
+		var result = super.isValidProposal(proposal, prefix, context)
+		if (LEVEL_TYPE.equals(proposal)) {
+			return isLevelTypeValidProposal(context, result)
+		}
+		return result
+	}
+
+	def private boolean isLevelTypeValidProposal(ContentAssistContext context, boolean result) {
+		var eObj = context.currentModel
+		while (!(eObj instanceof CubeDimension)) {
+			eObj = eObj.eContainer
+		}
+		if (eObj != null) {
+			if (eObj instanceof CubeDimension) {
+				var lCubeDimension = eObj as CubeDimension
+				if (!lCubeDimension.typeTime) {
+					return false
+				}
+			}
+		}
+		return result
+	}
+	override public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+	}
+
+	override public void complete_CubeQualifiedNameWithWildCard(EObject model, RuleCall ruleCall,
+		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
+	}
+
+	// ------------------------ delegates to TerminalsProposalProvider -----------------
+	override public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_STRING(model, ruleCall, context, acceptor)
+	}
+
+	override public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor)
+	}
+
+	override public void complete_STRING(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_STRING(model, ruleCall, context, acceptor)
+	}
+
+	override public void complete_ID(EObject model, RuleCall ruleCall, ContentAssistContext context,
+		ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor)
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/labeling/CubeDSLDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/labeling/CubeDSLDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..94e343a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/labeling/CubeDSLDescriptionLabelProvider.xtend
@@ -0,0 +1,38 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.ui.labeling
+
+//import org.eclipse.xtext.resource.IEObjectDescription
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class CubeDSLDescriptionLabelProvider extends org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider {
+
+	// Labels and icons can be computed like this:
+	
+//	override text(IEObjectDescription ele) {
+//		ele.name.toString
+//	}
+//	 
+//	override image(IEObjectDescription ele) {
+//		ele.EClass.name + '.gif'
+//	}	 
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/labeling/CubeDSLLabelProvider.xtend b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/labeling/CubeDSLLabelProvider.xtend
new file mode 100644
index 0000000..7601dd4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/labeling/CubeDSLLabelProvider.xtend
@@ -0,0 +1,88 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.ui.labeling
+
+import com.google.inject.Inject
+import org.eclipse.osbp.xtext.basic.ui.labeling.BasicDSLLabelProvider
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage
+import org.eclipse.osbp.xtext.cubedsl.CubeEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelProp
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure
+import org.eclipse.osbp.xtext.cubedsl.CubeModel
+import org.eclipse.osbp.xtext.cubedsl.CubePackage
+import org.eclipse.osbp.xtext.cubedsl.CubeType
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider
+
+/**
+ * Provides labels for a EObjects.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#labelProvider
+ */
+class CubeDSLLabelProvider extends BasicDSLLabelProvider {
+
+	@Inject
+	new(AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	 override text ( Object o ) {
+		switch (o) {
+			CubePackage					:	generateText( o, 'package'       , (o as CubePackage  ).name )
+			CubeMeasure					:	generateText( o, 'measure'       , (o as CubeMeasure  ).name )
+			CubeType					:	generateText( o, 'type'          , (o as CubeType     ).name )
+			CubeHierarchy				:	generateText( o, 'hierarchy'     , (o as CubeHierarchy).name )
+			CubeLevel					:	generateText( o, 'level'         , (o as CubeLevel    ).name )
+			CubeDimension				:	generateText( o, 'dimension'     , (o as CubeDimension).name )
+			CubeLevelProp				:	generateText( o, 'level property', (o as CubeLevelProp).name )
+			CubeDimensionEntityEntity 	: 	generateText( o, 'dim entity-entity'  )
+			CubeDimensionEntity			:	generateText( o, 'dimension entity'   )
+			CubeDimensionUsage			:	generateText( o, 'dimension usage'    )
+			CubeTypeEntity				:	generateText( o, 'type entity'   )
+			CubeEntity					:	generateText( o, 'entity'        )
+			default						:	super.text( o )
+		}
+	}
+//
+//	def image(Greeting ele) {
+//		'Greeting.gif'
+//	}
+	override image ( Object o ) {
+		switch (o) {
+			CubeModel					:	getInternalImage( 'model.png', class)
+			CubePackage					:	getInternalImage( 'package.gif', class)
+			CubeMeasure					:	getInternalImage( 'cubemeasure.png', class)
+			CubeType					:	getInternalImage( 'cubetype.png', class)
+			CubeHierarchy				:	getInternalImage( 'dsl_hierarchy.gif', class)
+			CubeLevel					:	getInternalImage( 'cubelevel.png', class)
+			CubeDimension				:	getInternalImage( 'cubedimension.png', class)
+			CubeLevelProp				:	getInternalImage( 'cube_level_prop.png', class)
+			CubeDimensionEntityEntity  	:	getInternalImage( 'cubedim_e_e.png', class)
+			CubeDimensionEntity			:	getInternalImage( 'cubedimensionentity.png', class)
+			CubeDimensionUsage			:	getInternalImage( 'cubedimensionusage.png', class)
+			CubeTypeEntity				:	getInternalImage( 'cubetypeentity.png', class)
+			CubeEntity					:	getInternalImage( 'cubeentity.png', class)
+			default						:	super.image( o )
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/outline/CubeDSLOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/outline/CubeDSLOutlineTreeProvider.xtend
new file mode 100644
index 0000000..0bb849b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/outline/CubeDSLOutlineTreeProvider.xtend
@@ -0,0 +1,27 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+class CubeDSLOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/quickfix/CubeDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/quickfix/CubeDSLQuickfixProvider.xtend
new file mode 100644
index 0000000..2fe97d7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/quickfix/CubeDSLQuickfixProvider.xtend
@@ -0,0 +1,40 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.ui.quickfix
+
+//import org.eclipse.xtext.ui.editor.quickfix.Fix
+//import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor
+//import org.eclipse.xtext.validation.Issue
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+class CubeDSLQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
+
+//	@Fix(MyDslValidator::INVALID_NAME)
+//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
+//			context |
+//			val xtextDocument = context.xtextDocument
+//			val firstLetter = xtextDocument.get(issue.offset, 1)
+//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
+//		]
+//	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/templates/templates.xml b/org.eclipse.osbp.xtext.cubedsl.ui/templates/templates.xml
new file mode 100644
index 0000000..07a788c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/templates/templates.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates>
+</templates>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl/.project b/org.eclipse.osbp.xtext.cubedsl/.project
new file mode 100644
index 0000000..92582c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.cubedsl</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.cubedsl/LICENSE.txt b/org.eclipse.osbp.xtext.cubedsl/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/LICENSE.txt
@@ -0,0 +1,161 @@
+Eclipse Public License -v 1.0
+
+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.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+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.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"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.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+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.
+
+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.
+
+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.
+
+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.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+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
diff --git a/org.eclipse.osbp.xtext.cubedsl/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.cubedsl/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..aa13ce8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/META-INF/MANIFEST.MF
@@ -0,0 +1,70 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.cubedsl
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-SymbolicName: org.eclipse.osbp.xtext.cubedsl;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.apache.xerces;bundle-version="2.9.0",
+ org.antlr.runtime,
+ org.apache.commons.logging;resolution:=optional,
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.core.runtime,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.common,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xcore,
+ org.eclipse.emf.ecore.xcore.lib,
+ org.eclipse.emf.mwe.utils;bundle-version="1.3.5";resolution:=optional,
+ org.eclipse.osgi.services,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ mondrian.osgi;bundle-version="[3.5.0,3.5.1)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.persistence;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="2.7.1";resolution:=optional,
+ org.eclipse.osbp.xtext.basic;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
+ org.apache.commons.lang;bundle-version="2.6.0";resolution:=optional,
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.runtime;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.xbase.setups;bundle-version="[0.9.0,0.10.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.xtext.cubedsl;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.formatting;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.generator;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.impl;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.jvmmodel;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.parser.antlr;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.scoping;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.serializer;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.services;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.util;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.validation;version="0.9.0",
+ org.eclipse.osbp.xtext.cubedsl.valueconverter;version="0.9.0"
+Import-Package: javax.validation,
+ javax.validation.constraints,
+ org.apache.log4j,
+ org.eclipse.e4.core.di.extensions,
+ org.osgi.framework,
+ org.osgi.service.event,
+ org.slf4j;resolution:=optional
+Bundle-Activator: org.eclipse.osbp.xtext.cubedsl.Activator
diff --git a/org.eclipse.osbp.xtext.cubedsl/about.html b/org.eclipse.osbp.xtext.cubedsl/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/about.html
@@ -0,0 +1,28 @@
+<!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"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 1, 2016</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>.
+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 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl/about.ini b/org.eclipse.osbp.xtext.cubedsl/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=
diff --git a/org.eclipse.osbp.xtext.cubedsl/about.mappings b/org.eclipse.osbp.xtext.cubedsl/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=qualifier
diff --git a/org.eclipse.osbp.xtext.cubedsl/about.properties b/org.eclipse.osbp.xtext.cubedsl/about.properties
new file mode 100644
index 0000000..0264128
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2012, 2016 - Loetz GmbH&Co.KG (Heidelberg)
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#    Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.cubedsl
+
+################ blurb property ####################################
+featureText=\
+Copyright (c) 2012-2016 - Loetz GmbH&Co.KG \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.cubedsl/build.properties b/org.eclipse.osbp.xtext.cubedsl/build.properties
new file mode 100644
index 0000000..ef84969
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/build.properties
@@ -0,0 +1,29 @@
+# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http{//www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#   
+#  Contributors{  
+#  		Joerg Riegel - Initial implementation 
+#  
+
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/,\
+           emf-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  model/,\
+               META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               LICENSE.txt,\
+               license.html
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeAggregatorEnum.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeAggregatorEnum.java
new file mode 100644
index 0000000..612f826
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeAggregatorEnum.java
@@ -0,0 +1,322 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cube Aggregator Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeAggregatorEnum()
+ * @model
+ * @generated
+ */
+public enum CubeAggregatorEnum implements Enumerator {
+	/**
+	 * The '<em><b>SUM</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUM_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUM(0, "SUM", "sum"),
+
+	/**
+	 * The '<em><b>COUNT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COUNT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	COUNT(0, "COUNT", "count"),
+
+	/**
+	 * The '<em><b>MIN</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MIN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MIN(0, "MIN", "min"),
+
+	/**
+	 * The '<em><b>MAX</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MAX_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MAX(0, "MAX", "max"),
+
+	/**
+	 * The '<em><b>AVG</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #AVG_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	AVG(0, "AVG", "avg"),
+
+	/**
+	 * The '<em><b>DSC</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DSC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DSC(0, "DSC", "distinct-count");
+
+	/**
+	 * The '<em><b>SUM</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SUM</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SUM
+	 * @model literal="sum"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SUM_VALUE = 0;
+
+	/**
+	 * The '<em><b>COUNT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>COUNT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #COUNT
+	 * @model literal="count"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COUNT_VALUE = 0;
+
+	/**
+	 * The '<em><b>MIN</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MIN</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MIN
+	 * @model literal="min"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MIN_VALUE = 0;
+
+	/**
+	 * The '<em><b>MAX</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MAX</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MAX
+	 * @model literal="max"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MAX_VALUE = 0;
+
+	/**
+	 * The '<em><b>AVG</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>AVG</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #AVG
+	 * @model literal="avg"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int AVG_VALUE = 0;
+
+	/**
+	 * The '<em><b>DSC</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DSC</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DSC
+	 * @model literal="distinct-count"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DSC_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Cube Aggregator Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final CubeAggregatorEnum[] VALUES_ARRAY =
+		new CubeAggregatorEnum[] {
+			SUM,
+			COUNT,
+			MIN,
+			MAX,
+			AVG,
+			DSC,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Cube Aggregator Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<CubeAggregatorEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Cube Aggregator Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeAggregatorEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CubeAggregatorEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cube Aggregator Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeAggregatorEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CubeAggregatorEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cube Aggregator Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeAggregatorEnum get(int value) {
+		switch (value) {
+			case SUM_VALUE: return SUM;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private CubeAggregatorEnum(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //CubeAggregatorEnum
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeBase.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeBase.java
new file mode 100644
index 0000000..2dd6565
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeBase.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Base</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeBase#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeBase()
+ * @model
+ * @generated
+ */
+public interface CubeBase extends CubeLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeBase_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeBase#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // CubeBase
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLFactory.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLFactory.java
new file mode 100644
index 0000000..73c372d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLFactory.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
+ * @generated
+ */
+public interface CubeDSLFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	CubeDSLFactory eINSTANCE = org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Cube Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Model</em>'.
+	 * @generated
+	 */
+	CubeModel createCubeModel();
+
+	/**
+	 * Returns a new object of class '<em>Cube Lazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Lazy Resolver</em>'.
+	 * @generated
+	 */
+	CubeLazyResolver createCubeLazyResolver();
+
+	/**
+	 * Returns a new object of class '<em>Cube Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Package</em>'.
+	 * @generated
+	 */
+	CubePackage createCubePackage();
+
+	/**
+	 * Returns a new object of class '<em>Cube Base</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Base</em>'.
+	 * @generated
+	 */
+	CubeBase createCubeBase();
+
+	/**
+	 * Returns a new object of class '<em>Cube Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Type</em>'.
+	 * @generated
+	 */
+	CubeType createCubeType();
+
+	/**
+	 * Returns a new object of class '<em>Cube Dimension Usage</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Dimension Usage</em>'.
+	 * @generated
+	 */
+	CubeDimensionUsage createCubeDimensionUsage();
+
+	/**
+	 * Returns a new object of class '<em>Cube Dimension</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Dimension</em>'.
+	 * @generated
+	 */
+	CubeDimension createCubeDimension();
+
+	/**
+	 * Returns a new object of class '<em>Cube Hierarchy</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Hierarchy</em>'.
+	 * @generated
+	 */
+	CubeHierarchy createCubeHierarchy();
+
+	/**
+	 * Returns a new object of class '<em>Cube Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Entity</em>'.
+	 * @generated
+	 */
+	CubeEntity createCubeEntity();
+
+	/**
+	 * Returns a new object of class '<em>Cube Entity Ref</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Entity Ref</em>'.
+	 * @generated
+	 */
+	CubeEntityRef createCubeEntityRef();
+
+	/**
+	 * Returns a new object of class '<em>Cube Type Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Type Entity</em>'.
+	 * @generated
+	 */
+	CubeTypeEntity createCubeTypeEntity();
+
+	/**
+	 * Returns a new object of class '<em>Cube Dimension Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Dimension Entity</em>'.
+	 * @generated
+	 */
+	CubeDimensionEntity createCubeDimensionEntity();
+
+	/**
+	 * Returns a new object of class '<em>Cube Dimension Entity Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Dimension Entity Entity</em>'.
+	 * @generated
+	 */
+	CubeDimensionEntityEntity createCubeDimensionEntityEntity();
+
+	/**
+	 * Returns a new object of class '<em>Cube Level</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Level</em>'.
+	 * @generated
+	 */
+	CubeLevel createCubeLevel();
+
+	/**
+	 * Returns a new object of class '<em>Cube Level Prop</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Level Prop</em>'.
+	 * @generated
+	 */
+	CubeLevelProp createCubeLevelProp();
+
+	/**
+	 * Returns a new object of class '<em>Cube Measure</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cube Measure</em>'.
+	 * @generated
+	 */
+	CubeMeasure createCubeMeasure();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	CubeDSLPackage getCubeDSLPackage();
+
+} //CubeDSLFactory
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLPackage.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLPackage.java
new file mode 100644
index 0000000..5966be8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLPackage.java
@@ -0,0 +1,2372 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='cube' modelName='CubeDSL' prefix='CubeDSL' updateClasspath='false' copyrightText='Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)\n All rights reserved. This program and the accompanying materials \n are made available under the terms of the Eclipse Public License v1.0 \n which accompanies this distribution, and is available at \n http://www.eclipse.org/legal/epl-v10.html \n\n Based on ideas from Xtext, Xtend, Xcore\n  \n Contributors:  \n \t\tJos\351 C. Dom\355nguez - Initial implementation\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='cubeDSL'"
+ * @generated
+ */
+public interface CubeDSLPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "cubedsl";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/xtext/cubedsl/CubeDSL";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "cubeDSL";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	CubeDSLPackage eINSTANCE = org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLazyResolverImpl <em>Cube Lazy Resolver</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeLazyResolverImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLazyResolver()
+	 * @generated
+	 */
+	int CUBE_LAZY_RESOLVER = 1;
+
+	/**
+	 * The number of structural features of the '<em>Cube Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LAZY_RESOLVER_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = 0;
+
+	/**
+	 * The number of operations of the '<em>Cube Lazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LAZY_RESOLVER_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeModelImpl <em>Cube Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeModelImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeModel()
+	 * @generated
+	 */
+	int CUBE_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Pckg</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MODEL__PCKG = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Cube Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MODEL_FEATURE_COUNT = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MODEL___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MODEL_OPERATION_COUNT = CUBE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl <em>Cube Package</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubePackage()
+	 * @generated
+	 */
+	int CUBE_PACKAGE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_PACKAGE__NAME = OSBPTypesPackage.LPACKAGE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
+
+	/**
+	 * The feature id for the '<em><b>Dimensions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_PACKAGE__DIMENSIONS = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cubes</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_PACKAGE__CUBES = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Cube Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_PACKAGE_FEATURE_COUNT = OSBPTypesPackage.LPACKAGE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_PACKAGE___ERESOLVE_PROXY__OBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_PACKAGE_OPERATION_COUNT = OSBPTypesPackage.LPACKAGE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeBaseImpl <em>Cube Base</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeBaseImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeBase()
+	 * @generated
+	 */
+	int CUBE_BASE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_BASE__NAME = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Cube Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_BASE_FEATURE_COUNT = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Base</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_BASE_OPERATION_COUNT = CUBE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl <em>Cube Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeType()
+	 * @generated
+	 */
+	int CUBE_TYPE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE__NAME = CUBE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Default Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE__DEFAULT_MEASURE = CUBE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Default Measure Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE__DEFAULT_MEASURE_VALUE = CUBE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Cube Type Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE__CUBE_TYPE_ENTITY = CUBE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Cube Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_FEATURE_COUNT = CUBE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_OPERATION_COUNT = CUBE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl <em>Cube Dimension Usage</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimensionUsage()
+	 * @generated
+	 */
+	int CUBE_DIMENSION_USAGE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Source Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_USAGE__SOURCE_VALUE = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Over Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_USAGE__OVER_VALUE = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Cube Dimension Usage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_USAGE_FEATURE_COUNT = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_USAGE___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Dimension Usage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_USAGE_OPERATION_COUNT = CUBE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl <em>Cube Dimension</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimension()
+	 * @generated
+	 */
+	int CUBE_DIMENSION = 6;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION__NAME = CUBE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION__TYPE_TIME = CUBE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Hierarchies</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION__HIERARCHIES = CUBE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Cube Dimension</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_FEATURE_COUNT = CUBE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Dimension</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_OPERATION_COUNT = CUBE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl <em>Cube Hierarchy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeHierarchy()
+	 * @generated
+	 */
+	int CUBE_HIERARCHY = 7;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY__NAME = CUBE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Has All</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY__HAS_ALL = CUBE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>All Member Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY__ALL_MEMBER_NAME = CUBE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>All Member Name Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE = CUBE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Default Member</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY__DEFAULT_MEMBER = CUBE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Default Member Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE = CUBE_BASE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Cube Dim Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY__CUBE_DIM_ENTITY = CUBE_BASE_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Cube Hierarchy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY_FEATURE_COUNT = CUBE_BASE_FEATURE_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Hierarchy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_HIERARCHY_OPERATION_COUNT = CUBE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl <em>Cube Entity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeEntity()
+	 * @generated
+	 */
+	int CUBE_ENTITY = 8;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY__KEY = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Entity Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY__ENTITY_VALUE = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Key Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY__KEY_VALUE = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Cube Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY_FEATURE_COUNT = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY_OPERATION_COUNT = CUBE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityRefImpl <em>Cube Entity Ref</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityRefImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeEntityRef()
+	 * @generated
+	 */
+	int CUBE_ENTITY_REF = 9;
+
+	/**
+	 * The feature id for the '<em><b>Entity Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY_REF__ENTITY_REF = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Cube Entity Ref</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY_REF_FEATURE_COUNT = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY_REF___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Entity Ref</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_ENTITY_REF_OPERATION_COUNT = CUBE_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl <em>Cube Type Entity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeTypeEntity()
+	 * @generated
+	 */
+	int CUBE_TYPE_ENTITY = 10;
+
+	/**
+	 * The feature id for the '<em><b>Entity Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_ENTITY__ENTITY_REF = CUBE_ENTITY_REF__ENTITY_REF;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_ENTITY__KEY = CUBE_ENTITY_REF_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Dimension Usages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_ENTITY__DIMENSION_USAGES = CUBE_ENTITY_REF_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Measures</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_ENTITY__MEASURES = CUBE_ENTITY_REF_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Cube Type Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_ENTITY_FEATURE_COUNT = CUBE_ENTITY_REF_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_ENTITY___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_ENTITY_REF___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Type Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_TYPE_ENTITY_OPERATION_COUNT = CUBE_ENTITY_REF_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl <em>Cube Dimension Entity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimensionEntity()
+	 * @generated
+	 */
+	int CUBE_DIMENSION_ENTITY = 11;
+
+	/**
+	 * The feature id for the '<em><b>Entity Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY__ENTITY_REF = CUBE_ENTITY_REF__ENTITY_REF;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY__KEY = CUBE_ENTITY_REF_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Hierarch Levels</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS = CUBE_ENTITY_REF_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Dim Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY__DIM_ENTITY = CUBE_ENTITY_REF_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Cube Dimension Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_FEATURE_COUNT = CUBE_ENTITY_REF_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_ENTITY_REF___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Dimension Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_OPERATION_COUNT = CUBE_ENTITY_REF_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityEntityImpl <em>Cube Dimension Entity Entity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityEntityImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimensionEntityEntity()
+	 * @generated
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY = 12;
+
+	/**
+	 * The feature id for the '<em><b>Entity Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY__ENTITY_REF = CUBE_DIMENSION_ENTITY__ENTITY_REF;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY__KEY = CUBE_DIMENSION_ENTITY__KEY;
+
+	/**
+	 * The feature id for the '<em><b>Hierarch Levels</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY__HIERARCH_LEVELS = CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS;
+
+	/**
+	 * The feature id for the '<em><b>Dim Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY__DIM_ENTITY = CUBE_DIMENSION_ENTITY__DIM_ENTITY;
+
+	/**
+	 * The feature id for the '<em><b>Over Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE = CUBE_DIMENSION_ENTITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Cube Dimension Entity Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY_FEATURE_COUNT = CUBE_DIMENSION_ENTITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_DIMENSION_ENTITY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Dimension Entity Entity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_DIMENSION_ENTITY_ENTITY_OPERATION_COUNT = CUBE_DIMENSION_ENTITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl <em>Cube Level</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevel()
+	 * @generated
+	 */
+	int CUBE_LEVEL = 13;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL__NAME = CUBE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Unique Members</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL__UNIQUE_MEMBERS = CUBE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Level Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL__LEVEL_TYPE = CUBE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Level Col Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL__LEVEL_COL_VALUE = CUBE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Level Type Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL__LEVEL_TYPE_VALUE = CUBE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL__PROPERTIES = CUBE_BASE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Cube Level</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_FEATURE_COUNT = CUBE_BASE_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Level</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_OPERATION_COUNT = CUBE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl <em>Cube Level Prop</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevelProp()
+	 * @generated
+	 */
+	int CUBE_LEVEL_PROP = 14;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_PROP__NAME = CUBE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_PROP__TYPE = CUBE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Level Prop Col Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE = CUBE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Type Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_PROP__TYPE_VALUE = CUBE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Cube Level Prop</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_PROP_FEATURE_COUNT = CUBE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_PROP___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Level Prop</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_LEVEL_PROP_OPERATION_COUNT = CUBE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl <em>Cube Measure</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeMeasure()
+	 * @generated
+	 */
+	int CUBE_MEASURE = 15;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MEASURE__NAME = CUBE_BASE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Not Visible</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MEASURE__NOT_VISIBLE = CUBE_BASE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Aggregator</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MEASURE__AGGREGATOR = CUBE_BASE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Measure Col</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MEASURE__MEASURE_COL = CUBE_BASE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Cube Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MEASURE_FEATURE_COUNT = CUBE_BASE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MEASURE___ERESOLVE_PROXY__INTERNALEOBJECT = CUBE_BASE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cube Measure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MEASURE_OPERATION_COUNT = CUBE_BASE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum <em>Cube Aggregator Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeAggregatorEnum()
+	 * @generated
+	 */
+	int CUBE_AGGREGATOR_ENUM = 16;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType <em>Cube Level Prop Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevelPropType()
+	 * @generated
+	 */
+	int CUBE_LEVEL_PROP_TYPE = 17;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType <em>Cube Level Level Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevelLevelType()
+	 * @generated
+	 */
+	int CUBE_LEVEL_LEVEL_TYPE = 18;
+
+	/**
+	 * The meta object id for the '<em>Internal EObject</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.InternalEObject
+	 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getInternalEObject()
+	 * @generated
+	 */
+	int INTERNAL_EOBJECT = 19;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeModel <em>Cube Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Model</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeModel
+	 * @generated
+	 */
+	EClass getCubeModel();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#getPckg <em>Pckg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Pckg</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeModel#getPckg()
+	 * @see #getCubeModel()
+	 * @generated
+	 */
+	EReference getCubeModel_Pckg();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver <em>Cube Lazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Lazy Resolver</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver
+	 * @generated
+	 */
+	EClass getCubeLazyResolver();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver#eResolveProxy(org.eclipse.emf.ecore.InternalEObject) <em>EResolve Proxy</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>EResolve Proxy</em>' operation.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver#eResolveProxy(org.eclipse.emf.ecore.InternalEObject)
+	 * @generated
+	 */
+	EOperation getCubeLazyResolver__EResolveProxy__InternalEObject();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubePackage <em>Cube Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Package</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubePackage
+	 * @generated
+	 */
+	EClass getCubePackage();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.cubedsl.CubePackage#getDimensions <em>Dimensions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Dimensions</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubePackage#getDimensions()
+	 * @see #getCubePackage()
+	 * @generated
+	 */
+	EReference getCubePackage_Dimensions();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.cubedsl.CubePackage#getCubes <em>Cubes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Cubes</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubePackage#getCubes()
+	 * @see #getCubePackage()
+	 * @generated
+	 */
+	EReference getCubePackage_Cubes();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeBase <em>Cube Base</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Base</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeBase
+	 * @generated
+	 */
+	EClass getCubeBase();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeBase#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeBase#getName()
+	 * @see #getCubeBase()
+	 * @generated
+	 */
+	EAttribute getCubeBase_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeType <em>Cube Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Type</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeType
+	 * @generated
+	 */
+	EClass getCubeType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeType#isDefaultMeasure <em>Default Measure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Default Measure</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeType#isDefaultMeasure()
+	 * @see #getCubeType()
+	 * @generated
+	 */
+	EAttribute getCubeType_DefaultMeasure();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getDefaultMeasureValue <em>Default Measure Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Default Measure Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeType#getDefaultMeasureValue()
+	 * @see #getCubeType()
+	 * @generated
+	 */
+	EAttribute getCubeType_DefaultMeasureValue();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getCubeTypeEntity <em>Cube Type Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Cube Type Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeType#getCubeTypeEntity()
+	 * @see #getCubeType()
+	 * @generated
+	 */
+	EReference getCubeType_CubeTypeEntity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage <em>Cube Dimension Usage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Dimension Usage</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage
+	 * @generated
+	 */
+	EClass getCubeDimensionUsage();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getSourceValue <em>Source Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Source Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getSourceValue()
+	 * @see #getCubeDimensionUsage()
+	 * @generated
+	 */
+	EReference getCubeDimensionUsage_SourceValue();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getOverValue <em>Over Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Over Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getOverValue()
+	 * @see #getCubeDimensionUsage()
+	 * @generated
+	 */
+	EReference getCubeDimensionUsage_OverValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension <em>Cube Dimension</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Dimension</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimension
+	 * @generated
+	 */
+	EClass getCubeDimension();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension#isTypeTime <em>Type Time</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type Time</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimension#isTypeTime()
+	 * @see #getCubeDimension()
+	 * @generated
+	 */
+	EAttribute getCubeDimension_TypeTime();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension#getHierarchies <em>Hierarchies</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Hierarchies</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimension#getHierarchies()
+	 * @see #getCubeDimension()
+	 * @generated
+	 */
+	EReference getCubeDimension_Hierarchies();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy <em>Cube Hierarchy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Hierarchy</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
+	 * @generated
+	 */
+	EClass getCubeHierarchy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isHasAll <em>Has All</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Has All</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isHasAll()
+	 * @see #getCubeHierarchy()
+	 * @generated
+	 */
+	EAttribute getCubeHierarchy_HasAll();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isAllMemberName <em>All Member Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>All Member Name</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isAllMemberName()
+	 * @see #getCubeHierarchy()
+	 * @generated
+	 */
+	EAttribute getCubeHierarchy_AllMemberName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getAllMemberNameValue <em>All Member Name Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>All Member Name Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getAllMemberNameValue()
+	 * @see #getCubeHierarchy()
+	 * @generated
+	 */
+	EAttribute getCubeHierarchy_AllMemberNameValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isDefaultMember <em>Default Member</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Default Member</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isDefaultMember()
+	 * @see #getCubeHierarchy()
+	 * @generated
+	 */
+	EAttribute getCubeHierarchy_DefaultMember();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getDefaultMemberValue <em>Default Member Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Default Member Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getDefaultMemberValue()
+	 * @see #getCubeHierarchy()
+	 * @generated
+	 */
+	EAttribute getCubeHierarchy_DefaultMemberValue();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getCubeDimEntity <em>Cube Dim Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Cube Dim Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getCubeDimEntity()
+	 * @see #getCubeHierarchy()
+	 * @generated
+	 */
+	EReference getCubeHierarchy_CubeDimEntity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity <em>Cube Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntity
+	 * @generated
+	 */
+	EClass getCubeEntity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#isKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntity#isKey()
+	 * @see #getCubeEntity()
+	 * @generated
+	 */
+	EAttribute getCubeEntity_Key();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getEntityValue <em>Entity Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Entity Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntity#getEntityValue()
+	 * @see #getCubeEntity()
+	 * @generated
+	 */
+	EReference getCubeEntity_EntityValue();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getKeyValue <em>Key Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Key Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntity#getKeyValue()
+	 * @see #getCubeEntity()
+	 * @generated
+	 */
+	EReference getCubeEntity_KeyValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntityRef <em>Cube Entity Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Entity Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntityRef
+	 * @generated
+	 */
+	EClass getCubeEntityRef();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntityRef#getEntityRef <em>Entity Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Entity Ref</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntityRef#getEntityRef()
+	 * @see #getCubeEntityRef()
+	 * @generated
+	 */
+	EReference getCubeEntityRef_EntityRef();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity <em>Cube Type Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Type Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity
+	 * @generated
+	 */
+	EClass getCubeTypeEntity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#isKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#isKey()
+	 * @see #getCubeTypeEntity()
+	 * @generated
+	 */
+	EAttribute getCubeTypeEntity_Key();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getDimensionUsages <em>Dimension Usages</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Dimension Usages</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getDimensionUsages()
+	 * @see #getCubeTypeEntity()
+	 * @generated
+	 */
+	EReference getCubeTypeEntity_DimensionUsages();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getMeasures <em>Measures</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Measures</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getMeasures()
+	 * @see #getCubeTypeEntity()
+	 * @generated
+	 */
+	EReference getCubeTypeEntity_Measures();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity <em>Cube Dimension Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Dimension Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity
+	 * @generated
+	 */
+	EClass getCubeDimensionEntity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#isKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#isKey()
+	 * @see #getCubeDimensionEntity()
+	 * @generated
+	 */
+	EAttribute getCubeDimensionEntity_Key();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getHierarchLevels <em>Hierarch Levels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Hierarch Levels</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getHierarchLevels()
+	 * @see #getCubeDimensionEntity()
+	 * @generated
+	 */
+	EReference getCubeDimensionEntity_HierarchLevels();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getDimEntity <em>Dim Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Dim Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getDimEntity()
+	 * @see #getCubeDimensionEntity()
+	 * @generated
+	 */
+	EReference getCubeDimensionEntity_DimEntity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity <em>Cube Dimension Entity Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Dimension Entity Entity</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity
+	 * @generated
+	 */
+	EClass getCubeDimensionEntityEntity();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity#getOverValue <em>Over Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Over Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity#getOverValue()
+	 * @see #getCubeDimensionEntityEntity()
+	 * @generated
+	 */
+	EReference getCubeDimensionEntityEntity_OverValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel <em>Cube Level</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Level</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevel
+	 * @generated
+	 */
+	EClass getCubeLevel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isUniqueMembers <em>Unique Members</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Unique Members</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevel#isUniqueMembers()
+	 * @see #getCubeLevel()
+	 * @generated
+	 */
+	EAttribute getCubeLevel_UniqueMembers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isLevelType <em>Level Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Level Type</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevel#isLevelType()
+	 * @see #getCubeLevel()
+	 * @generated
+	 */
+	EAttribute getCubeLevel_LevelType();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelColValue <em>Level Col Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Level Col Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelColValue()
+	 * @see #getCubeLevel()
+	 * @generated
+	 */
+	EReference getCubeLevel_LevelColValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelTypeValue <em>Level Type Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Level Type Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelTypeValue()
+	 * @see #getCubeLevel()
+	 * @generated
+	 */
+	EAttribute getCubeLevel_LevelTypeValue();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getProperties <em>Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Properties</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevel#getProperties()
+	 * @see #getCubeLevel()
+	 * @generated
+	 */
+	EReference getCubeLevel_Properties();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp <em>Cube Level Prop</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Level Prop</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelProp
+	 * @generated
+	 */
+	EClass getCubeLevelProp();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#isType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#isType()
+	 * @see #getCubeLevelProp()
+	 * @generated
+	 */
+	EAttribute getCubeLevelProp_Type();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getLevelPropColValue <em>Level Prop Col Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Level Prop Col Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getLevelPropColValue()
+	 * @see #getCubeLevelProp()
+	 * @generated
+	 */
+	EReference getCubeLevelProp_LevelPropColValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getTypeValue <em>Type Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type Value</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getTypeValue()
+	 * @see #getCubeLevelProp()
+	 * @generated
+	 */
+	EAttribute getCubeLevelProp_TypeValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure <em>Cube Measure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cube Measure</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeMeasure
+	 * @generated
+	 */
+	EClass getCubeMeasure();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#isNotVisible <em>Not Visible</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Not Visible</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeMeasure#isNotVisible()
+	 * @see #getCubeMeasure()
+	 * @generated
+	 */
+	EAttribute getCubeMeasure_NotVisible();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getAggregator <em>Aggregator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Aggregator</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getAggregator()
+	 * @see #getCubeMeasure()
+	 * @generated
+	 */
+	EAttribute getCubeMeasure_Aggregator();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getMeasureCol <em>Measure Col</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Measure Col</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getMeasureCol()
+	 * @see #getCubeMeasure()
+	 * @generated
+	 */
+	EReference getCubeMeasure_MeasureCol();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum <em>Cube Aggregator Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Cube Aggregator Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum
+	 * @generated
+	 */
+	EEnum getCubeAggregatorEnum();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType <em>Cube Level Prop Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Cube Level Prop Type</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType
+	 * @generated
+	 */
+	EEnum getCubeLevelPropType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType <em>Cube Level Level Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Cube Level Level Type</em>'.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType
+	 * @generated
+	 */
+	EEnum getCubeLevelLevelType();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.emf.ecore.InternalEObject <em>Internal EObject</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Internal EObject</em>'.
+	 * @see org.eclipse.emf.ecore.InternalEObject
+	 * @model instanceClass="org.eclipse.emf.ecore.InternalEObject"
+	 * @generated
+	 */
+	EDataType getInternalEObject();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	CubeDSLFactory getCubeDSLFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeModelImpl <em>Cube Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeModelImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeModel()
+		 * @generated
+		 */
+		EClass CUBE_MODEL = eINSTANCE.getCubeModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Pckg</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_MODEL__PCKG = eINSTANCE.getCubeModel_Pckg();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLazyResolverImpl <em>Cube Lazy Resolver</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeLazyResolverImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLazyResolver()
+		 * @generated
+		 */
+		EClass CUBE_LAZY_RESOLVER = eINSTANCE.getCubeLazyResolver();
+
+		/**
+		 * The meta object literal for the '<em><b>EResolve Proxy</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = eINSTANCE.getCubeLazyResolver__EResolveProxy__InternalEObject();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl <em>Cube Package</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubePackage()
+		 * @generated
+		 */
+		EClass CUBE_PACKAGE = eINSTANCE.getCubePackage();
+
+		/**
+		 * The meta object literal for the '<em><b>Dimensions</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_PACKAGE__DIMENSIONS = eINSTANCE.getCubePackage_Dimensions();
+
+		/**
+		 * The meta object literal for the '<em><b>Cubes</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_PACKAGE__CUBES = eINSTANCE.getCubePackage_Cubes();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeBaseImpl <em>Cube Base</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeBaseImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeBase()
+		 * @generated
+		 */
+		EClass CUBE_BASE = eINSTANCE.getCubeBase();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_BASE__NAME = eINSTANCE.getCubeBase_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl <em>Cube Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeType()
+		 * @generated
+		 */
+		EClass CUBE_TYPE = eINSTANCE.getCubeType();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Measure</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_TYPE__DEFAULT_MEASURE = eINSTANCE.getCubeType_DefaultMeasure();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Measure Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_TYPE__DEFAULT_MEASURE_VALUE = eINSTANCE.getCubeType_DefaultMeasureValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Cube Type Entity</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_TYPE__CUBE_TYPE_ENTITY = eINSTANCE.getCubeType_CubeTypeEntity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl <em>Cube Dimension Usage</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimensionUsage()
+		 * @generated
+		 */
+		EClass CUBE_DIMENSION_USAGE = eINSTANCE.getCubeDimensionUsage();
+
+		/**
+		 * The meta object literal for the '<em><b>Source Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_DIMENSION_USAGE__SOURCE_VALUE = eINSTANCE.getCubeDimensionUsage_SourceValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Over Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_DIMENSION_USAGE__OVER_VALUE = eINSTANCE.getCubeDimensionUsage_OverValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl <em>Cube Dimension</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimension()
+		 * @generated
+		 */
+		EClass CUBE_DIMENSION = eINSTANCE.getCubeDimension();
+
+		/**
+		 * The meta object literal for the '<em><b>Type Time</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_DIMENSION__TYPE_TIME = eINSTANCE.getCubeDimension_TypeTime();
+
+		/**
+		 * The meta object literal for the '<em><b>Hierarchies</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_DIMENSION__HIERARCHIES = eINSTANCE.getCubeDimension_Hierarchies();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl <em>Cube Hierarchy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeHierarchy()
+		 * @generated
+		 */
+		EClass CUBE_HIERARCHY = eINSTANCE.getCubeHierarchy();
+
+		/**
+		 * The meta object literal for the '<em><b>Has All</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_HIERARCHY__HAS_ALL = eINSTANCE.getCubeHierarchy_HasAll();
+
+		/**
+		 * The meta object literal for the '<em><b>All Member Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_HIERARCHY__ALL_MEMBER_NAME = eINSTANCE.getCubeHierarchy_AllMemberName();
+
+		/**
+		 * The meta object literal for the '<em><b>All Member Name Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE = eINSTANCE.getCubeHierarchy_AllMemberNameValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Member</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_HIERARCHY__DEFAULT_MEMBER = eINSTANCE.getCubeHierarchy_DefaultMember();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Member Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE = eINSTANCE.getCubeHierarchy_DefaultMemberValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Cube Dim Entity</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_HIERARCHY__CUBE_DIM_ENTITY = eINSTANCE.getCubeHierarchy_CubeDimEntity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl <em>Cube Entity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeEntity()
+		 * @generated
+		 */
+		EClass CUBE_ENTITY = eINSTANCE.getCubeEntity();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_ENTITY__KEY = eINSTANCE.getCubeEntity_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Entity Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_ENTITY__ENTITY_VALUE = eINSTANCE.getCubeEntity_EntityValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Key Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_ENTITY__KEY_VALUE = eINSTANCE.getCubeEntity_KeyValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityRefImpl <em>Cube Entity Ref</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityRefImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeEntityRef()
+		 * @generated
+		 */
+		EClass CUBE_ENTITY_REF = eINSTANCE.getCubeEntityRef();
+
+		/**
+		 * The meta object literal for the '<em><b>Entity Ref</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_ENTITY_REF__ENTITY_REF = eINSTANCE.getCubeEntityRef_EntityRef();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl <em>Cube Type Entity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeTypeEntity()
+		 * @generated
+		 */
+		EClass CUBE_TYPE_ENTITY = eINSTANCE.getCubeTypeEntity();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_TYPE_ENTITY__KEY = eINSTANCE.getCubeTypeEntity_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Dimension Usages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_TYPE_ENTITY__DIMENSION_USAGES = eINSTANCE.getCubeTypeEntity_DimensionUsages();
+
+		/**
+		 * The meta object literal for the '<em><b>Measures</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_TYPE_ENTITY__MEASURES = eINSTANCE.getCubeTypeEntity_Measures();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl <em>Cube Dimension Entity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimensionEntity()
+		 * @generated
+		 */
+		EClass CUBE_DIMENSION_ENTITY = eINSTANCE.getCubeDimensionEntity();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_DIMENSION_ENTITY__KEY = eINSTANCE.getCubeDimensionEntity_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Hierarch Levels</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS = eINSTANCE.getCubeDimensionEntity_HierarchLevels();
+
+		/**
+		 * The meta object literal for the '<em><b>Dim Entity</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_DIMENSION_ENTITY__DIM_ENTITY = eINSTANCE.getCubeDimensionEntity_DimEntity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityEntityImpl <em>Cube Dimension Entity Entity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityEntityImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeDimensionEntityEntity()
+		 * @generated
+		 */
+		EClass CUBE_DIMENSION_ENTITY_ENTITY = eINSTANCE.getCubeDimensionEntityEntity();
+
+		/**
+		 * The meta object literal for the '<em><b>Over Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE = eINSTANCE.getCubeDimensionEntityEntity_OverValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl <em>Cube Level</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevel()
+		 * @generated
+		 */
+		EClass CUBE_LEVEL = eINSTANCE.getCubeLevel();
+
+		/**
+		 * The meta object literal for the '<em><b>Unique Members</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_LEVEL__UNIQUE_MEMBERS = eINSTANCE.getCubeLevel_UniqueMembers();
+
+		/**
+		 * The meta object literal for the '<em><b>Level Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_LEVEL__LEVEL_TYPE = eINSTANCE.getCubeLevel_LevelType();
+
+		/**
+		 * The meta object literal for the '<em><b>Level Col Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_LEVEL__LEVEL_COL_VALUE = eINSTANCE.getCubeLevel_LevelColValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Level Type Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_LEVEL__LEVEL_TYPE_VALUE = eINSTANCE.getCubeLevel_LevelTypeValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_LEVEL__PROPERTIES = eINSTANCE.getCubeLevel_Properties();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl <em>Cube Level Prop</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevelProp()
+		 * @generated
+		 */
+		EClass CUBE_LEVEL_PROP = eINSTANCE.getCubeLevelProp();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_LEVEL_PROP__TYPE = eINSTANCE.getCubeLevelProp_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Level Prop Col Value</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE = eINSTANCE.getCubeLevelProp_LevelPropColValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Type Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_LEVEL_PROP__TYPE_VALUE = eINSTANCE.getCubeLevelProp_TypeValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl <em>Cube Measure</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeMeasure()
+		 * @generated
+		 */
+		EClass CUBE_MEASURE = eINSTANCE.getCubeMeasure();
+
+		/**
+		 * The meta object literal for the '<em><b>Not Visible</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_MEASURE__NOT_VISIBLE = eINSTANCE.getCubeMeasure_NotVisible();
+
+		/**
+		 * The meta object literal for the '<em><b>Aggregator</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CUBE_MEASURE__AGGREGATOR = eINSTANCE.getCubeMeasure_Aggregator();
+
+		/**
+		 * The meta object literal for the '<em><b>Measure Col</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_MEASURE__MEASURE_COL = eINSTANCE.getCubeMeasure_MeasureCol();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum <em>Cube Aggregator Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeAggregatorEnum()
+		 * @generated
+		 */
+		EEnum CUBE_AGGREGATOR_ENUM = eINSTANCE.getCubeAggregatorEnum();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType <em>Cube Level Prop Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevelPropType()
+		 * @generated
+		 */
+		EEnum CUBE_LEVEL_PROP_TYPE = eINSTANCE.getCubeLevelPropType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType <em>Cube Level Level Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getCubeLevelLevelType()
+		 * @generated
+		 */
+		EEnum CUBE_LEVEL_LEVEL_TYPE = eINSTANCE.getCubeLevelLevelType();
+
+		/**
+		 * The meta object literal for the '<em>Internal EObject</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.emf.ecore.InternalEObject
+		 * @see org.eclipse.osbp.xtext.cubedsl.impl.CubeDSLPackageImpl#getInternalEObject()
+		 * @generated
+		 */
+		EDataType INTERNAL_EOBJECT = eINSTANCE.getInternalEObject();
+
+	}
+
+} //CubeDSLPackage
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimension.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimension.java
new file mode 100644
index 0000000..7da988f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimension.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Dimension</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension#isTypeTime <em>Type Time</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension#getHierarchies <em>Hierarchies</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimension()
+ * @model
+ * @generated
+ */
+public interface CubeDimension extends CubeBase {
+	/**
+	 * Returns the value of the '<em><b>Type Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Time</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type Time</em>' attribute.
+	 * @see #setTypeTime(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimension_TypeTime()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isTypeTime();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension#isTypeTime <em>Type Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type Time</em>' attribute.
+	 * @see #isTypeTime()
+	 * @generated
+	 */
+	void setTypeTime(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Hierarchies</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hierarchies</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hierarchies</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimension_Hierarchies()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CubeHierarchy> getHierarchies();
+
+} // CubeDimension
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntity.java
new file mode 100644
index 0000000..4f7cba3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntity.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Dimension Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#isKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getHierarchLevels <em>Hierarch Levels</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getDimEntity <em>Dim Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntity()
+ * @model
+ * @generated
+ */
+public interface CubeDimensionEntity extends CubeEntityRef {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntity_Key()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#isKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #isKey()
+	 * @generated
+	 */
+	void setKey(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Hierarch Levels</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.cubedsl.CubeLevel}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hierarch Levels</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hierarch Levels</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntity_HierarchLevels()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CubeLevel> getHierarchLevels();
+
+	/**
+	 * Returns the value of the '<em><b>Dim Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dim Entity</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dim Entity</em>' containment reference.
+	 * @see #setDimEntity(CubeDimensionEntityEntity)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntity_DimEntity()
+	 * @model containment="true"
+	 * @generated
+	 */
+	CubeDimensionEntityEntity getDimEntity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getDimEntity <em>Dim Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dim Entity</em>' containment reference.
+	 * @see #getDimEntity()
+	 * @generated
+	 */
+	void setDimEntity(CubeDimensionEntityEntity value);
+
+} // CubeDimensionEntity
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntityEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntityEntity.java
new file mode 100644
index 0000000..e1efed9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntityEntity.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Dimension Entity Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity#getOverValue <em>Over Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntityEntity()
+ * @model
+ * @generated
+ */
+public interface CubeDimensionEntityEntity extends CubeDimensionEntity {
+	/**
+	 * Returns the value of the '<em><b>Over Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Over Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Over Value</em>' reference.
+	 * @see #setOverValue(LEntityFeature)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntityEntity_OverValue()
+	 * @model
+	 * @generated
+	 */
+	LEntityFeature getOverValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity#getOverValue <em>Over Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Over Value</em>' reference.
+	 * @see #getOverValue()
+	 * @generated
+	 */
+	void setOverValue(LEntityFeature value);
+
+} // CubeDimensionEntityEntity
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionUsage.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionUsage.java
new file mode 100644
index 0000000..7907252
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionUsage.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Dimension Usage</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getSourceValue <em>Source Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getOverValue <em>Over Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionUsage()
+ * @model
+ * @generated
+ */
+public interface CubeDimensionUsage extends CubeLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Source Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Source Value</em>' reference.
+	 * @see #setSourceValue(CubeDimension)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionUsage_SourceValue()
+	 * @model
+	 * @generated
+	 */
+	CubeDimension getSourceValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getSourceValue <em>Source Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source Value</em>' reference.
+	 * @see #getSourceValue()
+	 * @generated
+	 */
+	void setSourceValue(CubeDimension value);
+
+	/**
+	 * Returns the value of the '<em><b>Over Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Over Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Over Value</em>' reference.
+	 * @see #setOverValue(LEntityFeature)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionUsage_OverValue()
+	 * @model
+	 * @generated
+	 */
+	LEntityFeature getOverValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getOverValue <em>Over Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Over Value</em>' reference.
+	 * @see #getOverValue()
+	 * @generated
+	 */
+	void setOverValue(LEntityFeature value);
+
+} // CubeDimensionUsage
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntity.java
new file mode 100644
index 0000000..8dc87ab
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntity.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#isKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getEntityValue <em>Entity Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getKeyValue <em>Key Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntity()
+ * @model
+ * @generated
+ */
+public interface CubeEntity extends CubeLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntity_Key()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#isKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #isKey()
+	 * @generated
+	 */
+	void setKey(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Entity Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Entity Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Entity Value</em>' reference.
+	 * @see #setEntityValue(LEntity)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntity_EntityValue()
+	 * @model
+	 * @generated
+	 */
+	LEntity getEntityValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getEntityValue <em>Entity Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Entity Value</em>' reference.
+	 * @see #getEntityValue()
+	 * @generated
+	 */
+	void setEntityValue(LEntity value);
+
+	/**
+	 * Returns the value of the '<em><b>Key Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key Value</em>' reference.
+	 * @see #setKeyValue(LEntityFeature)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntity_KeyValue()
+	 * @model
+	 * @generated
+	 */
+	LEntityFeature getKeyValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getKeyValue <em>Key Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key Value</em>' reference.
+	 * @see #getKeyValue()
+	 * @generated
+	 */
+	void setKeyValue(LEntityFeature value);
+
+} // CubeEntity
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntityRef.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntityRef.java
new file mode 100644
index 0000000..f582746
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntityRef.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Entity Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntityRef#getEntityRef <em>Entity Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntityRef()
+ * @model
+ * @generated
+ */
+public interface CubeEntityRef extends CubeLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Entity Ref</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Entity Ref</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Entity Ref</em>' containment reference.
+	 * @see #setEntityRef(CubeEntity)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntityRef_EntityRef()
+	 * @model containment="true"
+	 * @generated
+	 */
+	CubeEntity getEntityRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntityRef#getEntityRef <em>Entity Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Entity Ref</em>' containment reference.
+	 * @see #getEntityRef()
+	 * @generated
+	 */
+	void setEntityRef(CubeEntity value);
+
+} // CubeEntityRef
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeHierarchy.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeHierarchy.java
new file mode 100644
index 0000000..b7b94a7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeHierarchy.java
@@ -0,0 +1,195 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Hierarchy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isHasAll <em>Has All</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isAllMemberName <em>All Member Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getAllMemberNameValue <em>All Member Name Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isDefaultMember <em>Default Member</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getDefaultMemberValue <em>Default Member Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getCubeDimEntity <em>Cube Dim Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy()
+ * @model
+ * @generated
+ */
+public interface CubeHierarchy extends CubeBase {
+	/**
+	 * Returns the value of the '<em><b>Has All</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Has All</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Has All</em>' attribute.
+	 * @see #setHasAll(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy_HasAll()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isHasAll();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isHasAll <em>Has All</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Has All</em>' attribute.
+	 * @see #isHasAll()
+	 * @generated
+	 */
+	void setHasAll(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>All Member Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>All Member Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>All Member Name</em>' attribute.
+	 * @see #setAllMemberName(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy_AllMemberName()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isAllMemberName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isAllMemberName <em>All Member Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>All Member Name</em>' attribute.
+	 * @see #isAllMemberName()
+	 * @generated
+	 */
+	void setAllMemberName(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>All Member Name Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>All Member Name Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>All Member Name Value</em>' attribute.
+	 * @see #setAllMemberNameValue(String)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy_AllMemberNameValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getAllMemberNameValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getAllMemberNameValue <em>All Member Name Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>All Member Name Value</em>' attribute.
+	 * @see #getAllMemberNameValue()
+	 * @generated
+	 */
+	void setAllMemberNameValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Default Member</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Member</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Default Member</em>' attribute.
+	 * @see #setDefaultMember(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy_DefaultMember()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isDefaultMember();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isDefaultMember <em>Default Member</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Default Member</em>' attribute.
+	 * @see #isDefaultMember()
+	 * @generated
+	 */
+	void setDefaultMember(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Default Member Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Member Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Default Member Value</em>' attribute.
+	 * @see #setDefaultMemberValue(String)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy_DefaultMemberValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getDefaultMemberValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getDefaultMemberValue <em>Default Member Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Default Member Value</em>' attribute.
+	 * @see #getDefaultMemberValue()
+	 * @generated
+	 */
+	void setDefaultMemberValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Cube Dim Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cube Dim Entity</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cube Dim Entity</em>' containment reference.
+	 * @see #setCubeDimEntity(CubeDimensionEntity)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy_CubeDimEntity()
+	 * @model containment="true"
+	 * @generated
+	 */
+	CubeDimensionEntity getCubeDimEntity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getCubeDimEntity <em>Cube Dim Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cube Dim Entity</em>' containment reference.
+	 * @see #getCubeDimEntity()
+	 * @generated
+	 */
+	void setCubeDimEntity(CubeDimensionEntity value);
+
+} // CubeHierarchy
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLazyResolver.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLazyResolver.java
new file mode 100644
index 0000000..13d1d86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLazyResolver.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLazyResolver()
+ * @model
+ * @generated
+ */
+public interface CubeLazyResolver extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.cubedsl.InternalEObject" proxyUnique="false"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='<%org.eclipse.emf.ecore.resource.Resource%> _eResource = this.eResource();\n<%org.eclipse.emf.ecore.resource.ResourceSet%> _resourceSet = _eResource.getResourceSet();\nreturn <%org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3%>.resolve(proxy, _resourceSet);'"
+	 * @generated
+	 */
+	EObject eResolveProxy(InternalEObject proxy);
+
+} // CubeLazyResolver
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevel.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevel.java
new file mode 100644
index 0000000..da570de
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevel.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Level</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isUniqueMembers <em>Unique Members</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isLevelType <em>Level Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelColValue <em>Level Col Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelTypeValue <em>Level Type Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getProperties <em>Properties</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevel()
+ * @model
+ * @generated
+ */
+public interface CubeLevel extends CubeBase {
+	/**
+	 * Returns the value of the '<em><b>Unique Members</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Unique Members</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Unique Members</em>' attribute.
+	 * @see #setUniqueMembers(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevel_UniqueMembers()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isUniqueMembers();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isUniqueMembers <em>Unique Members</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Unique Members</em>' attribute.
+	 * @see #isUniqueMembers()
+	 * @generated
+	 */
+	void setUniqueMembers(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Level Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Level Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Level Type</em>' attribute.
+	 * @see #setLevelType(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevel_LevelType()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isLevelType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isLevelType <em>Level Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Level Type</em>' attribute.
+	 * @see #isLevelType()
+	 * @generated
+	 */
+	void setLevelType(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Level Col Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Level Col Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Level Col Value</em>' reference.
+	 * @see #setLevelColValue(LEntityFeature)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevel_LevelColValue()
+	 * @model
+	 * @generated
+	 */
+	LEntityFeature getLevelColValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelColValue <em>Level Col Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Level Col Value</em>' reference.
+	 * @see #getLevelColValue()
+	 * @generated
+	 */
+	void setLevelColValue(LEntityFeature value);
+
+	/**
+	 * Returns the value of the '<em><b>Level Type Value</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Level Type Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Level Type Value</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType
+	 * @see #setLevelTypeValue(CubeLevelLevelType)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevel_LevelTypeValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	CubeLevelLevelType getLevelTypeValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelTypeValue <em>Level Type Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Level Type Value</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType
+	 * @see #getLevelTypeValue()
+	 * @generated
+	 */
+	void setLevelTypeValue(CubeLevelLevelType value);
+
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Properties</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Properties</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevel_Properties()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CubeLevelProp> getProperties();
+
+} // CubeLevel
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelLevelType.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelLevelType.java
new file mode 100644
index 0000000..e307862
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelLevelType.java
@@ -0,0 +1,426 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cube Level Level Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevelLevelType()
+ * @model
+ * @generated
+ */
+public enum CubeLevelLevelType implements Enumerator {
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME(0, "MDLEVEL_TYPE_TIME", "Time"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME YEARS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_YEARS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_YEARS(0, "MDLEVEL_TYPE_TIME_YEARS", "TimeYears"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME HALF YEARS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_HALF_YEARS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_HALF_YEARS(0, "MDLEVEL_TYPE_TIME_HALF_YEARS", "TimeHalfYears"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME QUARTERS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_QUARTERS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_QUARTERS(0, "MDLEVEL_TYPE_TIME_QUARTERS", "TimeQuarters"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME MONTHS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_MONTHS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_MONTHS(0, "MDLEVEL_TYPE_TIME_MONTHS", "TimeMonths"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME WEEKS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_WEEKS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_WEEKS(0, "MDLEVEL_TYPE_TIME_WEEKS", "TimeWeeks"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME DAYS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_DAYS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_DAYS(0, "MDLEVEL_TYPE_TIME_DAYS", "TimeDays"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME HOURS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_HOURS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_HOURS(0, "MDLEVEL_TYPE_TIME_HOURS", "TimeHours"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME MINUTES</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_MINUTES_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_MINUTES(0, "MDLEVEL_TYPE_TIME_MINUTES", "TimeMinutes"),
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME SECONDS</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_SECONDS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MDLEVEL_TYPE_TIME_SECONDS(0, "MDLEVEL_TYPE_TIME_SECONDS", "TimeSeconds");
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME
+	 * @model literal="Time"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME YEARS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME YEARS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_YEARS
+	 * @model literal="TimeYears"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_YEARS_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME HALF YEARS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME HALF YEARS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_HALF_YEARS
+	 * @model literal="TimeHalfYears"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_HALF_YEARS_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME QUARTERS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME QUARTERS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_QUARTERS
+	 * @model literal="TimeQuarters"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_QUARTERS_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME MONTHS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME MONTHS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_MONTHS
+	 * @model literal="TimeMonths"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_MONTHS_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME WEEKS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME WEEKS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_WEEKS
+	 * @model literal="TimeWeeks"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_WEEKS_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME DAYS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME DAYS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_DAYS
+	 * @model literal="TimeDays"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_DAYS_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME HOURS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME HOURS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_HOURS
+	 * @model literal="TimeHours"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_HOURS_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME MINUTES</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME MINUTES</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_MINUTES
+	 * @model literal="TimeMinutes"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_MINUTES_VALUE = 0;
+
+	/**
+	 * The '<em><b>MDLEVEL TYPE TIME SECONDS</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MDLEVEL TYPE TIME SECONDS</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MDLEVEL_TYPE_TIME_SECONDS
+	 * @model literal="TimeSeconds"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MDLEVEL_TYPE_TIME_SECONDS_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Cube Level Level Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final CubeLevelLevelType[] VALUES_ARRAY =
+		new CubeLevelLevelType[] {
+			MDLEVEL_TYPE_TIME,
+			MDLEVEL_TYPE_TIME_YEARS,
+			MDLEVEL_TYPE_TIME_HALF_YEARS,
+			MDLEVEL_TYPE_TIME_QUARTERS,
+			MDLEVEL_TYPE_TIME_MONTHS,
+			MDLEVEL_TYPE_TIME_WEEKS,
+			MDLEVEL_TYPE_TIME_DAYS,
+			MDLEVEL_TYPE_TIME_HOURS,
+			MDLEVEL_TYPE_TIME_MINUTES,
+			MDLEVEL_TYPE_TIME_SECONDS,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Cube Level Level Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<CubeLevelLevelType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Cube Level Level Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeLevelLevelType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CubeLevelLevelType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cube Level Level Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeLevelLevelType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CubeLevelLevelType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cube Level Level Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeLevelLevelType get(int value) {
+		switch (value) {
+			case MDLEVEL_TYPE_TIME_VALUE: return MDLEVEL_TYPE_TIME;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private CubeLevelLevelType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //CubeLevelLevelType
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelProp.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelProp.java
new file mode 100644
index 0000000..ef9e788
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelProp.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Level Prop</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#isType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getLevelPropColValue <em>Level Prop Col Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getTypeValue <em>Type Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevelProp()
+ * @model
+ * @generated
+ */
+public interface CubeLevelProp extends CubeBase {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevelProp_Type()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#isType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see #isType()
+	 * @generated
+	 */
+	void setType(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Level Prop Col Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Level Prop Col Value</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Level Prop Col Value</em>' reference.
+	 * @see #setLevelPropColValue(LEntityFeature)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevelProp_LevelPropColValue()
+	 * @model
+	 * @generated
+	 */
+	LEntityFeature getLevelPropColValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getLevelPropColValue <em>Level Prop Col Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Level Prop Col Value</em>' reference.
+	 * @see #getLevelPropColValue()
+	 * @generated
+	 */
+	void setLevelPropColValue(LEntityFeature value);
+
+	/**
+	 * Returns the value of the '<em><b>Type Value</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type Value</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType
+	 * @see #setTypeValue(CubeLevelPropType)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevelProp_TypeValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	CubeLevelPropType getTypeValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getTypeValue <em>Type Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type Value</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType
+	 * @see #getTypeValue()
+	 * @generated
+	 */
+	void setTypeValue(CubeLevelPropType value);
+
+} // CubeLevelProp
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelPropType.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelPropType.java
new file mode 100644
index 0000000..69acbab
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelPropType.java
@@ -0,0 +1,348 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cube Level Prop Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevelPropType()
+ * @model
+ * @generated
+ */
+public enum CubeLevelPropType implements Enumerator {
+	/**
+	 * The '<em><b>STRING</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STRING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	STRING(0, "STRING", "String"),
+
+	/**
+	 * The '<em><b>NUMERIC</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NUMERIC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NUMERIC(0, "NUMERIC", "Numeric"),
+
+	/**
+	 * The '<em><b>INTEGER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INTEGER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INTEGER(0, "INTEGER", "Integer"),
+
+	/**
+	 * The '<em><b>BOOLEAN</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOOLEAN_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOOLEAN(0, "BOOLEAN", "Boolean"),
+
+	/**
+	 * The '<em><b>DATE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DATE(0, "DATE", "Date"),
+
+	/**
+	 * The '<em><b>TIME</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TIME_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TIME(0, "TIME", "Time"),
+
+	/**
+	 * The '<em><b>TIMESTAMP</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TIMESTAMP_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TIMESTAMP(0, "TIMESTAMP", "Timestamp");
+
+	/**
+	 * The '<em><b>STRING</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>STRING</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #STRING
+	 * @model literal="String"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int STRING_VALUE = 0;
+
+	/**
+	 * The '<em><b>NUMERIC</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NUMERIC</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NUMERIC
+	 * @model literal="Numeric"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NUMERIC_VALUE = 0;
+
+	/**
+	 * The '<em><b>INTEGER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>INTEGER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INTEGER
+	 * @model literal="Integer"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INTEGER_VALUE = 0;
+
+	/**
+	 * The '<em><b>BOOLEAN</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>BOOLEAN</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #BOOLEAN
+	 * @model literal="Boolean"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOOLEAN_VALUE = 0;
+
+	/**
+	 * The '<em><b>DATE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DATE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DATE
+	 * @model literal="Date"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DATE_VALUE = 0;
+
+	/**
+	 * The '<em><b>TIME</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TIME</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TIME
+	 * @model literal="Time"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TIME_VALUE = 0;
+
+	/**
+	 * The '<em><b>TIMESTAMP</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TIMESTAMP</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TIMESTAMP
+	 * @model literal="Timestamp"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TIMESTAMP_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Cube Level Prop Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final CubeLevelPropType[] VALUES_ARRAY =
+		new CubeLevelPropType[] {
+			STRING,
+			NUMERIC,
+			INTEGER,
+			BOOLEAN,
+			DATE,
+			TIME,
+			TIMESTAMP,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Cube Level Prop Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<CubeLevelPropType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Cube Level Prop Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeLevelPropType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CubeLevelPropType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cube Level Prop Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeLevelPropType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			CubeLevelPropType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cube Level Prop Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeLevelPropType get(int value) {
+		switch (value) {
+			case STRING_VALUE: return STRING;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private CubeLevelPropType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //CubeLevelPropType
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeMeasure.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeMeasure.java
new file mode 100644
index 0000000..bb8e4b0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeMeasure.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Measure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#isNotVisible <em>Not Visible</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getAggregator <em>Aggregator</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getMeasureCol <em>Measure Col</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeMeasure()
+ * @model
+ * @generated
+ */
+public interface CubeMeasure extends CubeBase {
+	/**
+	 * Returns the value of the '<em><b>Not Visible</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Not Visible</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Not Visible</em>' attribute.
+	 * @see #setNotVisible(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeMeasure_NotVisible()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isNotVisible();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#isNotVisible <em>Not Visible</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Not Visible</em>' attribute.
+	 * @see #isNotVisible()
+	 * @generated
+	 */
+	void setNotVisible(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Aggregator</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Aggregator</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Aggregator</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum
+	 * @see #setAggregator(CubeAggregatorEnum)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeMeasure_Aggregator()
+	 * @model unique="false"
+	 * @generated
+	 */
+	CubeAggregatorEnum getAggregator();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getAggregator <em>Aggregator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Aggregator</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum
+	 * @see #getAggregator()
+	 * @generated
+	 */
+	void setAggregator(CubeAggregatorEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Measure Col</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Measure Col</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Measure Col</em>' reference.
+	 * @see #setMeasureCol(LEntityFeature)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeMeasure_MeasureCol()
+	 * @model
+	 * @generated
+	 */
+	LEntityFeature getMeasureCol();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getMeasureCol <em>Measure Col</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Measure Col</em>' reference.
+	 * @see #getMeasureCol()
+	 * @generated
+	 */
+	void setMeasureCol(LEntityFeature value);
+
+} // CubeMeasure
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeModel.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeModel.java
new file mode 100644
index 0000000..629f3ad
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeModel.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#getPckg <em>Pckg</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeModel()
+ * @model
+ * @generated
+ */
+public interface CubeModel extends CubeLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Pckg</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pckg</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pckg</em>' containment reference.
+	 * @see #setPckg(CubePackage)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeModel_Pckg()
+	 * @model containment="true"
+	 * @generated
+	 */
+	CubePackage getPckg();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#getPckg <em>Pckg</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pckg</em>' containment reference.
+	 * @see #getPckg()
+	 * @generated
+	 */
+	void setPckg(CubePackage value);
+
+} // CubeModel
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubePackage.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubePackage.java
new file mode 100644
index 0000000..0bc0260
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubePackage.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubePackage#getDimensions <em>Dimensions</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubePackage#getCubes <em>Cubes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubePackage()
+ * @model
+ * @generated
+ */
+public interface CubePackage extends LPackage {
+	/**
+	 * Returns the value of the '<em><b>Dimensions</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.cubedsl.CubeDimension}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dimensions</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dimensions</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubePackage_Dimensions()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CubeDimension> getDimensions();
+
+	/**
+	 * Returns the value of the '<em><b>Cubes</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.cubedsl.CubeType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cubes</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cubes</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubePackage_Cubes()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CubeType> getCubes();
+
+} // CubePackage
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeType.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeType.java
new file mode 100644
index 0000000..a42cf71
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeType.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeType#isDefaultMeasure <em>Default Measure</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getDefaultMeasureValue <em>Default Measure Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getCubeTypeEntity <em>Cube Type Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeType()
+ * @model
+ * @generated
+ */
+public interface CubeType extends CubeBase {
+	/**
+	 * Returns the value of the '<em><b>Default Measure</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Measure</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Default Measure</em>' attribute.
+	 * @see #setDefaultMeasure(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeType_DefaultMeasure()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isDefaultMeasure();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeType#isDefaultMeasure <em>Default Measure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Default Measure</em>' attribute.
+	 * @see #isDefaultMeasure()
+	 * @generated
+	 */
+	void setDefaultMeasure(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Default Measure Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Measure Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Default Measure Value</em>' attribute.
+	 * @see #setDefaultMeasureValue(String)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeType_DefaultMeasureValue()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getDefaultMeasureValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getDefaultMeasureValue <em>Default Measure Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Default Measure Value</em>' attribute.
+	 * @see #getDefaultMeasureValue()
+	 * @generated
+	 */
+	void setDefaultMeasureValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Cube Type Entity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cube Type Entity</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cube Type Entity</em>' containment reference.
+	 * @see #setCubeTypeEntity(CubeTypeEntity)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeType_CubeTypeEntity()
+	 * @model containment="true"
+	 * @generated
+	 */
+	CubeTypeEntity getCubeTypeEntity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getCubeTypeEntity <em>Cube Type Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cube Type Entity</em>' containment reference.
+	 * @see #getCubeTypeEntity()
+	 * @generated
+	 */
+	void setCubeTypeEntity(CubeTypeEntity value);
+
+} // CubeType
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeTypeEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeTypeEntity.java
new file mode 100644
index 0000000..ba3e6cd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeTypeEntity.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cube Type Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#isKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getDimensionUsages <em>Dimension Usages</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getMeasures <em>Measures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeTypeEntity()
+ * @model
+ * @generated
+ */
+public interface CubeTypeEntity extends CubeEntityRef {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(boolean)
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeTypeEntity_Key()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#isKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #isKey()
+	 * @generated
+	 */
+	void setKey(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Dimension Usages</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dimension Usages</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dimension Usages</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeTypeEntity_DimensionUsages()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CubeDimensionUsage> getDimensionUsages();
+
+	/**
+	 * Returns the value of the '<em><b>Measures</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Measures</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Measures</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeTypeEntity_Measures()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CubeMeasure> getMeasures();
+
+} // CubeTypeEntity
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeBaseImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeBaseImpl.java
new file mode 100644
index 0000000..2b079de
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeBaseImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeBase;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Base</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeBaseImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeBaseImpl extends CubeLazyResolverImpl implements CubeBase {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeBaseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_BASE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_BASE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_BASE__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_BASE__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_BASE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_BASE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeBaseImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLFactoryImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLFactoryImpl.java
new file mode 100644
index 0000000..b2ce825
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLFactoryImpl.java
@@ -0,0 +1,393 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.osbp.xtext.cubedsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CubeDSLFactoryImpl extends EFactoryImpl implements CubeDSLFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static CubeDSLFactory init() {
+		try {
+			CubeDSLFactory theCubeDSLFactory = (CubeDSLFactory)EPackage.Registry.INSTANCE.getEFactory(CubeDSLPackage.eNS_URI);
+			if (theCubeDSLFactory != null) {
+				return theCubeDSLFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new CubeDSLFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDSLFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case CubeDSLPackage.CUBE_MODEL: return createCubeModel();
+			case CubeDSLPackage.CUBE_LAZY_RESOLVER: return createCubeLazyResolver();
+			case CubeDSLPackage.CUBE_PACKAGE: return createCubePackage();
+			case CubeDSLPackage.CUBE_BASE: return createCubeBase();
+			case CubeDSLPackage.CUBE_TYPE: return createCubeType();
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE: return createCubeDimensionUsage();
+			case CubeDSLPackage.CUBE_DIMENSION: return createCubeDimension();
+			case CubeDSLPackage.CUBE_HIERARCHY: return createCubeHierarchy();
+			case CubeDSLPackage.CUBE_ENTITY: return createCubeEntity();
+			case CubeDSLPackage.CUBE_ENTITY_REF: return createCubeEntityRef();
+			case CubeDSLPackage.CUBE_TYPE_ENTITY: return createCubeTypeEntity();
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY: return createCubeDimensionEntity();
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY: return createCubeDimensionEntityEntity();
+			case CubeDSLPackage.CUBE_LEVEL: return createCubeLevel();
+			case CubeDSLPackage.CUBE_LEVEL_PROP: return createCubeLevelProp();
+			case CubeDSLPackage.CUBE_MEASURE: return createCubeMeasure();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case CubeDSLPackage.CUBE_AGGREGATOR_ENUM:
+				return createCubeAggregatorEnumFromString(eDataType, initialValue);
+			case CubeDSLPackage.CUBE_LEVEL_PROP_TYPE:
+				return createCubeLevelPropTypeFromString(eDataType, initialValue);
+			case CubeDSLPackage.CUBE_LEVEL_LEVEL_TYPE:
+				return createCubeLevelLevelTypeFromString(eDataType, initialValue);
+			case CubeDSLPackage.INTERNAL_EOBJECT:
+				return createInternalEObjectFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case CubeDSLPackage.CUBE_AGGREGATOR_ENUM:
+				return convertCubeAggregatorEnumToString(eDataType, instanceValue);
+			case CubeDSLPackage.CUBE_LEVEL_PROP_TYPE:
+				return convertCubeLevelPropTypeToString(eDataType, instanceValue);
+			case CubeDSLPackage.CUBE_LEVEL_LEVEL_TYPE:
+				return convertCubeLevelLevelTypeToString(eDataType, instanceValue);
+			case CubeDSLPackage.INTERNAL_EOBJECT:
+				return convertInternalEObjectToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeModel createCubeModel() {
+		CubeModelImpl cubeModel = new CubeModelImpl();
+		return cubeModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLazyResolver createCubeLazyResolver() {
+		CubeLazyResolverImpl cubeLazyResolver = new CubeLazyResolverImpl();
+		return cubeLazyResolver;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubePackage createCubePackage() {
+		CubePackageImpl cubePackage = new CubePackageImpl();
+		return cubePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeBase createCubeBase() {
+		CubeBaseImpl cubeBase = new CubeBaseImpl();
+		return cubeBase;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeType createCubeType() {
+		CubeTypeImpl cubeType = new CubeTypeImpl();
+		return cubeType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimensionUsage createCubeDimensionUsage() {
+		CubeDimensionUsageImpl cubeDimensionUsage = new CubeDimensionUsageImpl();
+		return cubeDimensionUsage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimension createCubeDimension() {
+		CubeDimensionImpl cubeDimension = new CubeDimensionImpl();
+		return cubeDimension;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeHierarchy createCubeHierarchy() {
+		CubeHierarchyImpl cubeHierarchy = new CubeHierarchyImpl();
+		return cubeHierarchy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeEntity createCubeEntity() {
+		CubeEntityImpl cubeEntity = new CubeEntityImpl();
+		return cubeEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeEntityRef createCubeEntityRef() {
+		CubeEntityRefImpl cubeEntityRef = new CubeEntityRefImpl();
+		return cubeEntityRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeTypeEntity createCubeTypeEntity() {
+		CubeTypeEntityImpl cubeTypeEntity = new CubeTypeEntityImpl();
+		return cubeTypeEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimensionEntity createCubeDimensionEntity() {
+		CubeDimensionEntityImpl cubeDimensionEntity = new CubeDimensionEntityImpl();
+		return cubeDimensionEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimensionEntityEntity createCubeDimensionEntityEntity() {
+		CubeDimensionEntityEntityImpl cubeDimensionEntityEntity = new CubeDimensionEntityEntityImpl();
+		return cubeDimensionEntityEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevel createCubeLevel() {
+		CubeLevelImpl cubeLevel = new CubeLevelImpl();
+		return cubeLevel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevelProp createCubeLevelProp() {
+		CubeLevelPropImpl cubeLevelProp = new CubeLevelPropImpl();
+		return cubeLevelProp;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeMeasure createCubeMeasure() {
+		CubeMeasureImpl cubeMeasure = new CubeMeasureImpl();
+		return cubeMeasure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeAggregatorEnum createCubeAggregatorEnumFromString(EDataType eDataType, String initialValue) {
+		CubeAggregatorEnum result = CubeAggregatorEnum.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertCubeAggregatorEnumToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevelPropType createCubeLevelPropTypeFromString(EDataType eDataType, String initialValue) {
+		CubeLevelPropType result = CubeLevelPropType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertCubeLevelPropTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevelLevelType createCubeLevelLevelTypeFromString(EDataType eDataType, String initialValue) {
+		CubeLevelLevelType result = CubeLevelLevelType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertCubeLevelLevelTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InternalEObject createInternalEObjectFromString(EDataType eDataType, String initialValue) {
+		return (InternalEObject)super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertInternalEObjectToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDSLPackage getCubeDSLPackage() {
+		return (CubeDSLPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static CubeDSLPackage getPackage() {
+		return CubeDSLPackage.eINSTANCE;
+	}
+
+} //CubeDSLFactoryImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLPackageImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLPackageImpl.java
new file mode 100644
index 0000000..65c56e9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLPackageImpl.java
@@ -0,0 +1,1100 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum;
+import org.eclipse.osbp.xtext.cubedsl.CubeBase;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLFactory;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage;
+import org.eclipse.osbp.xtext.cubedsl.CubeEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeEntityRef;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelProp;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+import org.eclipse.osbp.xtext.cubedsl.CubeModel;
+import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
+
+import org.eclipse.xtext.xbase.XbasePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CubeDSLPackageImpl extends EPackageImpl implements CubeDSLPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeLazyResolverEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubePackageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeBaseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeDimensionUsageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeDimensionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeHierarchyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeEntityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeEntityRefEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeTypeEntityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeDimensionEntityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeDimensionEntityEntityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeLevelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeLevelPropEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cubeMeasureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum cubeAggregatorEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum cubeLevelPropTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum cubeLevelLevelTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType internalEObjectEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private CubeDSLPackageImpl() {
+		super(eNS_URI, CubeDSLFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link CubeDSLPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static CubeDSLPackage init() {
+		if (isInited) return (CubeDSLPackage)EPackage.Registry.INSTANCE.getEPackage(CubeDSLPackage.eNS_URI);
+
+		// Obtain or create and register package
+		CubeDSLPackageImpl theCubeDSLPackage = (CubeDSLPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof CubeDSLPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new CubeDSLPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		OSBPEntityPackage.eINSTANCE.eClass();
+		XbasePackage.eINSTANCE.eClass();
+		OSBPTypesPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theCubeDSLPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theCubeDSLPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theCubeDSLPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(CubeDSLPackage.eNS_URI, theCubeDSLPackage);
+		return theCubeDSLPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeModel() {
+		return cubeModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeModel_Pckg() {
+		return (EReference)cubeModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeLazyResolver() {
+		return cubeLazyResolverEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getCubeLazyResolver__EResolveProxy__InternalEObject() {
+		return cubeLazyResolverEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubePackage() {
+		return cubePackageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubePackage_Dimensions() {
+		return (EReference)cubePackageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubePackage_Cubes() {
+		return (EReference)cubePackageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeBase() {
+		return cubeBaseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeBase_Name() {
+		return (EAttribute)cubeBaseEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeType() {
+		return cubeTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeType_DefaultMeasure() {
+		return (EAttribute)cubeTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeType_DefaultMeasureValue() {
+		return (EAttribute)cubeTypeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeType_CubeTypeEntity() {
+		return (EReference)cubeTypeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeDimensionUsage() {
+		return cubeDimensionUsageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeDimensionUsage_SourceValue() {
+		return (EReference)cubeDimensionUsageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeDimensionUsage_OverValue() {
+		return (EReference)cubeDimensionUsageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeDimension() {
+		return cubeDimensionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeDimension_TypeTime() {
+		return (EAttribute)cubeDimensionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeDimension_Hierarchies() {
+		return (EReference)cubeDimensionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeHierarchy() {
+		return cubeHierarchyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeHierarchy_HasAll() {
+		return (EAttribute)cubeHierarchyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeHierarchy_AllMemberName() {
+		return (EAttribute)cubeHierarchyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeHierarchy_AllMemberNameValue() {
+		return (EAttribute)cubeHierarchyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeHierarchy_DefaultMember() {
+		return (EAttribute)cubeHierarchyEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeHierarchy_DefaultMemberValue() {
+		return (EAttribute)cubeHierarchyEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeHierarchy_CubeDimEntity() {
+		return (EReference)cubeHierarchyEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeEntity() {
+		return cubeEntityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeEntity_Key() {
+		return (EAttribute)cubeEntityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeEntity_EntityValue() {
+		return (EReference)cubeEntityEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeEntity_KeyValue() {
+		return (EReference)cubeEntityEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeEntityRef() {
+		return cubeEntityRefEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeEntityRef_EntityRef() {
+		return (EReference)cubeEntityRefEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeTypeEntity() {
+		return cubeTypeEntityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeTypeEntity_Key() {
+		return (EAttribute)cubeTypeEntityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeTypeEntity_DimensionUsages() {
+		return (EReference)cubeTypeEntityEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeTypeEntity_Measures() {
+		return (EReference)cubeTypeEntityEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeDimensionEntity() {
+		return cubeDimensionEntityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeDimensionEntity_Key() {
+		return (EAttribute)cubeDimensionEntityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeDimensionEntity_HierarchLevels() {
+		return (EReference)cubeDimensionEntityEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeDimensionEntity_DimEntity() {
+		return (EReference)cubeDimensionEntityEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeDimensionEntityEntity() {
+		return cubeDimensionEntityEntityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeDimensionEntityEntity_OverValue() {
+		return (EReference)cubeDimensionEntityEntityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeLevel() {
+		return cubeLevelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeLevel_UniqueMembers() {
+		return (EAttribute)cubeLevelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeLevel_LevelType() {
+		return (EAttribute)cubeLevelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeLevel_LevelColValue() {
+		return (EReference)cubeLevelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeLevel_LevelTypeValue() {
+		return (EAttribute)cubeLevelEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeLevel_Properties() {
+		return (EReference)cubeLevelEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeLevelProp() {
+		return cubeLevelPropEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeLevelProp_Type() {
+		return (EAttribute)cubeLevelPropEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeLevelProp_LevelPropColValue() {
+		return (EReference)cubeLevelPropEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeLevelProp_TypeValue() {
+		return (EAttribute)cubeLevelPropEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCubeMeasure() {
+		return cubeMeasureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeMeasure_NotVisible() {
+		return (EAttribute)cubeMeasureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCubeMeasure_Aggregator() {
+		return (EAttribute)cubeMeasureEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCubeMeasure_MeasureCol() {
+		return (EReference)cubeMeasureEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getCubeAggregatorEnum() {
+		return cubeAggregatorEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getCubeLevelPropType() {
+		return cubeLevelPropTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getCubeLevelLevelType() {
+		return cubeLevelLevelTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInternalEObject() {
+		return internalEObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDSLFactory getCubeDSLFactory() {
+		return (CubeDSLFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		cubeModelEClass = createEClass(CUBE_MODEL);
+		createEReference(cubeModelEClass, CUBE_MODEL__PCKG);
+
+		cubeLazyResolverEClass = createEClass(CUBE_LAZY_RESOLVER);
+		createEOperation(cubeLazyResolverEClass, CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT);
+
+		cubePackageEClass = createEClass(CUBE_PACKAGE);
+		createEReference(cubePackageEClass, CUBE_PACKAGE__DIMENSIONS);
+		createEReference(cubePackageEClass, CUBE_PACKAGE__CUBES);
+
+		cubeBaseEClass = createEClass(CUBE_BASE);
+		createEAttribute(cubeBaseEClass, CUBE_BASE__NAME);
+
+		cubeTypeEClass = createEClass(CUBE_TYPE);
+		createEAttribute(cubeTypeEClass, CUBE_TYPE__DEFAULT_MEASURE);
+		createEAttribute(cubeTypeEClass, CUBE_TYPE__DEFAULT_MEASURE_VALUE);
+		createEReference(cubeTypeEClass, CUBE_TYPE__CUBE_TYPE_ENTITY);
+
+		cubeDimensionUsageEClass = createEClass(CUBE_DIMENSION_USAGE);
+		createEReference(cubeDimensionUsageEClass, CUBE_DIMENSION_USAGE__SOURCE_VALUE);
+		createEReference(cubeDimensionUsageEClass, CUBE_DIMENSION_USAGE__OVER_VALUE);
+
+		cubeDimensionEClass = createEClass(CUBE_DIMENSION);
+		createEAttribute(cubeDimensionEClass, CUBE_DIMENSION__TYPE_TIME);
+		createEReference(cubeDimensionEClass, CUBE_DIMENSION__HIERARCHIES);
+
+		cubeHierarchyEClass = createEClass(CUBE_HIERARCHY);
+		createEAttribute(cubeHierarchyEClass, CUBE_HIERARCHY__HAS_ALL);
+		createEAttribute(cubeHierarchyEClass, CUBE_HIERARCHY__ALL_MEMBER_NAME);
+		createEAttribute(cubeHierarchyEClass, CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE);
+		createEAttribute(cubeHierarchyEClass, CUBE_HIERARCHY__DEFAULT_MEMBER);
+		createEAttribute(cubeHierarchyEClass, CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE);
+		createEReference(cubeHierarchyEClass, CUBE_HIERARCHY__CUBE_DIM_ENTITY);
+
+		cubeEntityEClass = createEClass(CUBE_ENTITY);
+		createEAttribute(cubeEntityEClass, CUBE_ENTITY__KEY);
+		createEReference(cubeEntityEClass, CUBE_ENTITY__ENTITY_VALUE);
+		createEReference(cubeEntityEClass, CUBE_ENTITY__KEY_VALUE);
+
+		cubeEntityRefEClass = createEClass(CUBE_ENTITY_REF);
+		createEReference(cubeEntityRefEClass, CUBE_ENTITY_REF__ENTITY_REF);
+
+		cubeTypeEntityEClass = createEClass(CUBE_TYPE_ENTITY);
+		createEAttribute(cubeTypeEntityEClass, CUBE_TYPE_ENTITY__KEY);
+		createEReference(cubeTypeEntityEClass, CUBE_TYPE_ENTITY__DIMENSION_USAGES);
+		createEReference(cubeTypeEntityEClass, CUBE_TYPE_ENTITY__MEASURES);
+
+		cubeDimensionEntityEClass = createEClass(CUBE_DIMENSION_ENTITY);
+		createEAttribute(cubeDimensionEntityEClass, CUBE_DIMENSION_ENTITY__KEY);
+		createEReference(cubeDimensionEntityEClass, CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS);
+		createEReference(cubeDimensionEntityEClass, CUBE_DIMENSION_ENTITY__DIM_ENTITY);
+
+		cubeDimensionEntityEntityEClass = createEClass(CUBE_DIMENSION_ENTITY_ENTITY);
+		createEReference(cubeDimensionEntityEntityEClass, CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE);
+
+		cubeLevelEClass = createEClass(CUBE_LEVEL);
+		createEAttribute(cubeLevelEClass, CUBE_LEVEL__UNIQUE_MEMBERS);
+		createEAttribute(cubeLevelEClass, CUBE_LEVEL__LEVEL_TYPE);
+		createEReference(cubeLevelEClass, CUBE_LEVEL__LEVEL_COL_VALUE);
+		createEAttribute(cubeLevelEClass, CUBE_LEVEL__LEVEL_TYPE_VALUE);
+		createEReference(cubeLevelEClass, CUBE_LEVEL__PROPERTIES);
+
+		cubeLevelPropEClass = createEClass(CUBE_LEVEL_PROP);
+		createEAttribute(cubeLevelPropEClass, CUBE_LEVEL_PROP__TYPE);
+		createEReference(cubeLevelPropEClass, CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE);
+		createEAttribute(cubeLevelPropEClass, CUBE_LEVEL_PROP__TYPE_VALUE);
+
+		cubeMeasureEClass = createEClass(CUBE_MEASURE);
+		createEAttribute(cubeMeasureEClass, CUBE_MEASURE__NOT_VISIBLE);
+		createEAttribute(cubeMeasureEClass, CUBE_MEASURE__AGGREGATOR);
+		createEReference(cubeMeasureEClass, CUBE_MEASURE__MEASURE_COL);
+
+		// Create enums
+		cubeAggregatorEnumEEnum = createEEnum(CUBE_AGGREGATOR_ENUM);
+		cubeLevelPropTypeEEnum = createEEnum(CUBE_LEVEL_PROP_TYPE);
+		cubeLevelLevelTypeEEnum = createEEnum(CUBE_LEVEL_LEVEL_TYPE);
+
+		// Create data types
+		internalEObjectEDataType = createEDataType(INTERNAL_EOBJECT);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+		OSBPTypesPackage theOSBPTypesPackage = (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+		OSBPEntityPackage theOSBPEntityPackage = (OSBPEntityPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPEntityPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		cubeModelEClass.getESuperTypes().add(this.getCubeLazyResolver());
+		cubePackageEClass.getESuperTypes().add(theOSBPTypesPackage.getLPackage());
+		cubeBaseEClass.getESuperTypes().add(this.getCubeLazyResolver());
+		cubeTypeEClass.getESuperTypes().add(this.getCubeBase());
+		cubeDimensionUsageEClass.getESuperTypes().add(this.getCubeLazyResolver());
+		cubeDimensionEClass.getESuperTypes().add(this.getCubeBase());
+		cubeHierarchyEClass.getESuperTypes().add(this.getCubeBase());
+		cubeEntityEClass.getESuperTypes().add(this.getCubeLazyResolver());
+		cubeEntityRefEClass.getESuperTypes().add(this.getCubeLazyResolver());
+		cubeTypeEntityEClass.getESuperTypes().add(this.getCubeEntityRef());
+		cubeDimensionEntityEClass.getESuperTypes().add(this.getCubeEntityRef());
+		cubeDimensionEntityEntityEClass.getESuperTypes().add(this.getCubeDimensionEntity());
+		cubeLevelEClass.getESuperTypes().add(this.getCubeBase());
+		cubeLevelPropEClass.getESuperTypes().add(this.getCubeBase());
+		cubeMeasureEClass.getESuperTypes().add(this.getCubeBase());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(cubeModelEClass, CubeModel.class, "CubeModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCubeModel_Pckg(), this.getCubePackage(), null, "pckg", null, 0, 1, CubeModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeLazyResolverEClass, CubeLazyResolver.class, "CubeLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		EOperation op = initEOperation(getCubeLazyResolver__EResolveProxy__InternalEObject(), theEcorePackage.getEObject(), "eResolveProxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(cubePackageEClass, CubePackage.class, "CubePackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCubePackage_Dimensions(), this.getCubeDimension(), null, "dimensions", null, 0, -1, CubePackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubePackage_Cubes(), this.getCubeType(), null, "cubes", null, 0, -1, CubePackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeBaseEClass, CubeBase.class, "CubeBase", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeBase_Name(), theEcorePackage.getEString(), "name", null, 0, 1, CubeBase.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeTypeEClass, CubeType.class, "CubeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeType_DefaultMeasure(), theEcorePackage.getEBoolean(), "defaultMeasure", null, 0, 1, CubeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeType_DefaultMeasureValue(), theEcorePackage.getEString(), "defaultMeasureValue", null, 0, 1, CubeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeType_CubeTypeEntity(), this.getCubeTypeEntity(), null, "cubeTypeEntity", null, 0, 1, CubeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeDimensionUsageEClass, CubeDimensionUsage.class, "CubeDimensionUsage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCubeDimensionUsage_SourceValue(), this.getCubeDimension(), null, "sourceValue", null, 0, 1, CubeDimensionUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeDimensionUsage_OverValue(), theOSBPEntityPackage.getLEntityFeature(), null, "overValue", null, 0, 1, CubeDimensionUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeDimensionEClass, CubeDimension.class, "CubeDimension", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeDimension_TypeTime(), theEcorePackage.getEBoolean(), "typeTime", null, 0, 1, CubeDimension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeDimension_Hierarchies(), this.getCubeHierarchy(), null, "hierarchies", null, 0, -1, CubeDimension.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeHierarchyEClass, CubeHierarchy.class, "CubeHierarchy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeHierarchy_HasAll(), theEcorePackage.getEBoolean(), "hasAll", null, 0, 1, CubeHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeHierarchy_AllMemberName(), theEcorePackage.getEBoolean(), "allMemberName", null, 0, 1, CubeHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeHierarchy_AllMemberNameValue(), theEcorePackage.getEString(), "allMemberNameValue", null, 0, 1, CubeHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeHierarchy_DefaultMember(), theEcorePackage.getEBoolean(), "defaultMember", null, 0, 1, CubeHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeHierarchy_DefaultMemberValue(), theEcorePackage.getEString(), "defaultMemberValue", null, 0, 1, CubeHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeHierarchy_CubeDimEntity(), this.getCubeDimensionEntity(), null, "cubeDimEntity", null, 0, 1, CubeHierarchy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeEntityEClass, CubeEntity.class, "CubeEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeEntity_Key(), theEcorePackage.getEBoolean(), "key", null, 0, 1, CubeEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeEntity_EntityValue(), theOSBPEntityPackage.getLEntity(), null, "entityValue", null, 0, 1, CubeEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeEntity_KeyValue(), theOSBPEntityPackage.getLEntityFeature(), null, "keyValue", null, 0, 1, CubeEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeEntityRefEClass, CubeEntityRef.class, "CubeEntityRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCubeEntityRef_EntityRef(), this.getCubeEntity(), null, "entityRef", null, 0, 1, CubeEntityRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeTypeEntityEClass, CubeTypeEntity.class, "CubeTypeEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeTypeEntity_Key(), theEcorePackage.getEBoolean(), "key", null, 0, 1, CubeTypeEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeTypeEntity_DimensionUsages(), this.getCubeDimensionUsage(), null, "dimensionUsages", null, 0, -1, CubeTypeEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeTypeEntity_Measures(), this.getCubeMeasure(), null, "measures", null, 0, -1, CubeTypeEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeDimensionEntityEClass, CubeDimensionEntity.class, "CubeDimensionEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeDimensionEntity_Key(), theEcorePackage.getEBoolean(), "key", null, 0, 1, CubeDimensionEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeDimensionEntity_HierarchLevels(), this.getCubeLevel(), null, "hierarchLevels", null, 0, -1, CubeDimensionEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeDimensionEntity_DimEntity(), this.getCubeDimensionEntityEntity(), null, "dimEntity", null, 0, 1, CubeDimensionEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeDimensionEntityEntityEClass, CubeDimensionEntityEntity.class, "CubeDimensionEntityEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCubeDimensionEntityEntity_OverValue(), theOSBPEntityPackage.getLEntityFeature(), null, "overValue", null, 0, 1, CubeDimensionEntityEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeLevelEClass, CubeLevel.class, "CubeLevel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeLevel_UniqueMembers(), theEcorePackage.getEBoolean(), "uniqueMembers", null, 0, 1, CubeLevel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeLevel_LevelType(), theEcorePackage.getEBoolean(), "levelType", null, 0, 1, CubeLevel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeLevel_LevelColValue(), theOSBPEntityPackage.getLEntityFeature(), null, "levelColValue", null, 0, 1, CubeLevel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeLevel_LevelTypeValue(), this.getCubeLevelLevelType(), "levelTypeValue", null, 0, 1, CubeLevel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeLevel_Properties(), this.getCubeLevelProp(), null, "properties", null, 0, -1, CubeLevel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeLevelPropEClass, CubeLevelProp.class, "CubeLevelProp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeLevelProp_Type(), theEcorePackage.getEBoolean(), "type", null, 0, 1, CubeLevelProp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeLevelProp_LevelPropColValue(), theOSBPEntityPackage.getLEntityFeature(), null, "levelPropColValue", null, 0, 1, CubeLevelProp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeLevelProp_TypeValue(), this.getCubeLevelPropType(), "typeValue", null, 0, 1, CubeLevelProp.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(cubeMeasureEClass, CubeMeasure.class, "CubeMeasure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCubeMeasure_NotVisible(), theEcorePackage.getEBoolean(), "notVisible", null, 0, 1, CubeMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getCubeMeasure_Aggregator(), this.getCubeAggregatorEnum(), "aggregator", null, 0, 1, CubeMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCubeMeasure_MeasureCol(), theOSBPEntityPackage.getLEntityFeature(), null, "measureCol", null, 0, 1, CubeMeasure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(cubeAggregatorEnumEEnum, CubeAggregatorEnum.class, "CubeAggregatorEnum");
+		addEEnumLiteral(cubeAggregatorEnumEEnum, CubeAggregatorEnum.SUM);
+		addEEnumLiteral(cubeAggregatorEnumEEnum, CubeAggregatorEnum.COUNT);
+		addEEnumLiteral(cubeAggregatorEnumEEnum, CubeAggregatorEnum.MIN);
+		addEEnumLiteral(cubeAggregatorEnumEEnum, CubeAggregatorEnum.MAX);
+		addEEnumLiteral(cubeAggregatorEnumEEnum, CubeAggregatorEnum.AVG);
+		addEEnumLiteral(cubeAggregatorEnumEEnum, CubeAggregatorEnum.DSC);
+
+		initEEnum(cubeLevelPropTypeEEnum, CubeLevelPropType.class, "CubeLevelPropType");
+		addEEnumLiteral(cubeLevelPropTypeEEnum, CubeLevelPropType.STRING);
+		addEEnumLiteral(cubeLevelPropTypeEEnum, CubeLevelPropType.NUMERIC);
+		addEEnumLiteral(cubeLevelPropTypeEEnum, CubeLevelPropType.INTEGER);
+		addEEnumLiteral(cubeLevelPropTypeEEnum, CubeLevelPropType.BOOLEAN);
+		addEEnumLiteral(cubeLevelPropTypeEEnum, CubeLevelPropType.DATE);
+		addEEnumLiteral(cubeLevelPropTypeEEnum, CubeLevelPropType.TIME);
+		addEEnumLiteral(cubeLevelPropTypeEEnum, CubeLevelPropType.TIMESTAMP);
+
+		initEEnum(cubeLevelLevelTypeEEnum, CubeLevelLevelType.class, "CubeLevelLevelType");
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_YEARS);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_HALF_YEARS);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_QUARTERS);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_MONTHS);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_WEEKS);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_DAYS);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_HOURS);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_MINUTES);
+		addEEnumLiteral(cubeLevelLevelTypeEEnum, CubeLevelLevelType.MDLEVEL_TYPE_TIME_SECONDS);
+
+		// Initialize data types
+		initEDataType(internalEObjectEDataType, InternalEObject.class, "InternalEObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/emf/2002/Ecore
+		createEcoreAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createEcoreAnnotations() {
+		String source = "http://www.eclipse.org/emf/2002/Ecore";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "rootPackage", "cubeDSL"
+		   });
+	}
+
+} //CubeDSLPackageImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityEntityImpl.java
new file mode 100644
index 0000000..bf6919f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityEntityImpl.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Dimension Entity Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityEntityImpl#getOverValue <em>Over Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeDimensionEntityEntityImpl extends CubeDimensionEntityImpl implements CubeDimensionEntityEntity {
+	/**
+	 * The cached value of the '{@link #getOverValue() <em>Over Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOverValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityFeature overValue;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeDimensionEntityEntityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_DIMENSION_ENTITY_ENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature getOverValue() {
+		if (overValue != null && overValue.eIsProxy()) {
+			InternalEObject oldOverValue = (InternalEObject)overValue;
+			overValue = (LEntityFeature)eResolveProxy(oldOverValue);
+			if (overValue != oldOverValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE, oldOverValue, overValue));
+			}
+		}
+		return overValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature basicGetOverValue() {
+		return overValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOverValue(LEntityFeature newOverValue) {
+		LEntityFeature oldOverValue = overValue;
+		overValue = newOverValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE, oldOverValue, overValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE:
+				if (resolve) return getOverValue();
+				return basicGetOverValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE:
+				setOverValue((LEntityFeature)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE:
+				setOverValue((LEntityFeature)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE:
+				return overValue != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CubeDimensionEntityEntityImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityImpl.java
new file mode 100644
index 0000000..fdda923
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityImpl.java
@@ -0,0 +1,299 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Dimension Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl#isKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl#getHierarchLevels <em>Hierarch Levels</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl#getDimEntity <em>Dim Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeDimensionEntityImpl extends CubeEntityRefImpl implements CubeDimensionEntity {
+	/**
+	 * The default value of the '{@link #isKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean KEY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean key = KEY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getHierarchLevels() <em>Hierarch Levels</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHierarchLevels()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CubeLevel> hierarchLevels;
+
+	/**
+	 * The cached value of the '{@link #getDimEntity() <em>Dim Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDimEntity()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeDimensionEntityEntity dimEntity;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeDimensionEntityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_DIMENSION_ENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKey(boolean newKey) {
+		boolean oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_DIMENSION_ENTITY__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CubeLevel> getHierarchLevels() {
+		if (hierarchLevels == null) {
+			hierarchLevels = new EObjectContainmentEList<CubeLevel>(CubeLevel.class, this, CubeDSLPackage.CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS);
+		}
+		return hierarchLevels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimensionEntityEntity getDimEntity() {
+		return dimEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDimEntity(CubeDimensionEntityEntity newDimEntity, NotificationChain msgs) {
+		CubeDimensionEntityEntity oldDimEntity = dimEntity;
+		dimEntity = newDimEntity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY, oldDimEntity, newDimEntity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDimEntity(CubeDimensionEntityEntity newDimEntity) {
+		if (newDimEntity != dimEntity) {
+			NotificationChain msgs = null;
+			if (dimEntity != null)
+				msgs = ((InternalEObject)dimEntity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY, null, msgs);
+			if (newDimEntity != null)
+				msgs = ((InternalEObject)newDimEntity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY, null, msgs);
+			msgs = basicSetDimEntity(newDimEntity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY, newDimEntity, newDimEntity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS:
+				return ((InternalEList<?>)getHierarchLevels()).basicRemove(otherEnd, msgs);
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY:
+				return basicSetDimEntity(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__KEY:
+				return isKey();
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS:
+				return getHierarchLevels();
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY:
+				return getDimEntity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__KEY:
+				setKey((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS:
+				getHierarchLevels().clear();
+				getHierarchLevels().addAll((Collection<? extends CubeLevel>)newValue);
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY:
+				setDimEntity((CubeDimensionEntityEntity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__KEY:
+				setKey(KEY_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS:
+				getHierarchLevels().clear();
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY:
+				setDimEntity((CubeDimensionEntityEntity)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__KEY:
+				return key != KEY_EDEFAULT;
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__HIERARCH_LEVELS:
+				return hierarchLevels != null && !hierarchLevels.isEmpty();
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY__DIM_ENTITY:
+				return dimEntity != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeDimensionEntityImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionImpl.java
new file mode 100644
index 0000000..a9c0b51
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionImpl.java
@@ -0,0 +1,232 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Dimension</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl#isTypeTime <em>Type Time</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl#getHierarchies <em>Hierarchies</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeDimensionImpl extends CubeBaseImpl implements CubeDimension {
+	/**
+	 * The default value of the '{@link #isTypeTime() <em>Type Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTypeTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TYPE_TIME_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTypeTime() <em>Type Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTypeTime()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean typeTime = TYPE_TIME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getHierarchies() <em>Hierarchies</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHierarchies()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CubeHierarchy> hierarchies;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeDimensionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_DIMENSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTypeTime() {
+		return typeTime;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeTime(boolean newTypeTime) {
+		boolean oldTypeTime = typeTime;
+		typeTime = newTypeTime;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_DIMENSION__TYPE_TIME, oldTypeTime, typeTime));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CubeHierarchy> getHierarchies() {
+		if (hierarchies == null) {
+			hierarchies = new EObjectContainmentEList<CubeHierarchy>(CubeHierarchy.class, this, CubeDSLPackage.CUBE_DIMENSION__HIERARCHIES);
+		}
+		return hierarchies;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION__HIERARCHIES:
+				return ((InternalEList<?>)getHierarchies()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION__TYPE_TIME:
+				return isTypeTime();
+			case CubeDSLPackage.CUBE_DIMENSION__HIERARCHIES:
+				return getHierarchies();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION__TYPE_TIME:
+				setTypeTime((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION__HIERARCHIES:
+				getHierarchies().clear();
+				getHierarchies().addAll((Collection<? extends CubeHierarchy>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION__TYPE_TIME:
+				setTypeTime(TYPE_TIME_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION__HIERARCHIES:
+				getHierarchies().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION__TYPE_TIME:
+				return typeTime != TYPE_TIME_EDEFAULT;
+			case CubeDSLPackage.CUBE_DIMENSION__HIERARCHIES:
+				return hierarchies != null && !hierarchies.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (typeTime: ");
+		result.append(typeTime);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeDimensionImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionUsageImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionUsageImpl.java
new file mode 100644
index 0000000..fc70e51
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionUsageImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Dimension Usage</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl#getSourceValue <em>Source Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl#getOverValue <em>Over Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeDimensionUsageImpl extends CubeLazyResolverImpl implements CubeDimensionUsage {
+	/**
+	 * The cached value of the '{@link #getSourceValue() <em>Source Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeDimension sourceValue;
+
+	/**
+	 * The cached value of the '{@link #getOverValue() <em>Over Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOverValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityFeature overValue;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeDimensionUsageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimension getSourceValue() {
+		if (sourceValue != null && sourceValue.eIsProxy()) {
+			InternalEObject oldSourceValue = (InternalEObject)sourceValue;
+			sourceValue = (CubeDimension)eResolveProxy(oldSourceValue);
+			if (sourceValue != oldSourceValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_DIMENSION_USAGE__SOURCE_VALUE, oldSourceValue, sourceValue));
+			}
+		}
+		return sourceValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimension basicGetSourceValue() {
+		return sourceValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSourceValue(CubeDimension newSourceValue) {
+		CubeDimension oldSourceValue = sourceValue;
+		sourceValue = newSourceValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_DIMENSION_USAGE__SOURCE_VALUE, oldSourceValue, sourceValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature getOverValue() {
+		if (overValue != null && overValue.eIsProxy()) {
+			InternalEObject oldOverValue = (InternalEObject)overValue;
+			overValue = (LEntityFeature)eResolveProxy(oldOverValue);
+			if (overValue != oldOverValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_DIMENSION_USAGE__OVER_VALUE, oldOverValue, overValue));
+			}
+		}
+		return overValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature basicGetOverValue() {
+		return overValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOverValue(LEntityFeature newOverValue) {
+		LEntityFeature oldOverValue = overValue;
+		overValue = newOverValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_DIMENSION_USAGE__OVER_VALUE, oldOverValue, overValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__SOURCE_VALUE:
+				if (resolve) return getSourceValue();
+				return basicGetSourceValue();
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__OVER_VALUE:
+				if (resolve) return getOverValue();
+				return basicGetOverValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__SOURCE_VALUE:
+				setSourceValue((CubeDimension)newValue);
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__OVER_VALUE:
+				setOverValue((LEntityFeature)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__SOURCE_VALUE:
+				setSourceValue((CubeDimension)null);
+				return;
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__OVER_VALUE:
+				setOverValue((LEntityFeature)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__SOURCE_VALUE:
+				return sourceValue != null;
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE__OVER_VALUE:
+				return overValue != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CubeDimensionUsageImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityImpl.java
new file mode 100644
index 0000000..1674f14
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityImpl.java
@@ -0,0 +1,297 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeEntity;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl#isKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl#getEntityValue <em>Entity Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl#getKeyValue <em>Key Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeEntityImpl extends CubeLazyResolverImpl implements CubeEntity {
+	/**
+	 * The default value of the '{@link #isKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean KEY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean key = KEY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getEntityValue() <em>Entity Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEntityValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntity entityValue;
+
+	/**
+	 * The cached value of the '{@link #getKeyValue() <em>Key Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKeyValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityFeature keyValue;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeEntityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_ENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKey(boolean newKey) {
+		boolean oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_ENTITY__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity getEntityValue() {
+		if (entityValue != null && entityValue.eIsProxy()) {
+			InternalEObject oldEntityValue = (InternalEObject)entityValue;
+			entityValue = (LEntity)eResolveProxy(oldEntityValue);
+			if (entityValue != oldEntityValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_ENTITY__ENTITY_VALUE, oldEntityValue, entityValue));
+			}
+		}
+		return entityValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity basicGetEntityValue() {
+		return entityValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEntityValue(LEntity newEntityValue) {
+		LEntity oldEntityValue = entityValue;
+		entityValue = newEntityValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_ENTITY__ENTITY_VALUE, oldEntityValue, entityValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature getKeyValue() {
+		if (keyValue != null && keyValue.eIsProxy()) {
+			InternalEObject oldKeyValue = (InternalEObject)keyValue;
+			keyValue = (LEntityFeature)eResolveProxy(oldKeyValue);
+			if (keyValue != oldKeyValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_ENTITY__KEY_VALUE, oldKeyValue, keyValue));
+			}
+		}
+		return keyValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature basicGetKeyValue() {
+		return keyValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKeyValue(LEntityFeature newKeyValue) {
+		LEntityFeature oldKeyValue = keyValue;
+		keyValue = newKeyValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_ENTITY__KEY_VALUE, oldKeyValue, keyValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY__KEY:
+				return isKey();
+			case CubeDSLPackage.CUBE_ENTITY__ENTITY_VALUE:
+				if (resolve) return getEntityValue();
+				return basicGetEntityValue();
+			case CubeDSLPackage.CUBE_ENTITY__KEY_VALUE:
+				if (resolve) return getKeyValue();
+				return basicGetKeyValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY__KEY:
+				setKey((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_ENTITY__ENTITY_VALUE:
+				setEntityValue((LEntity)newValue);
+				return;
+			case CubeDSLPackage.CUBE_ENTITY__KEY_VALUE:
+				setKeyValue((LEntityFeature)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY__KEY:
+				setKey(KEY_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_ENTITY__ENTITY_VALUE:
+				setEntityValue((LEntity)null);
+				return;
+			case CubeDSLPackage.CUBE_ENTITY__KEY_VALUE:
+				setKeyValue((LEntityFeature)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY__KEY:
+				return key != KEY_EDEFAULT;
+			case CubeDSLPackage.CUBE_ENTITY__ENTITY_VALUE:
+				return entityValue != null;
+			case CubeDSLPackage.CUBE_ENTITY__KEY_VALUE:
+				return keyValue != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeEntityImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityRefImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityRefImpl.java
new file mode 100644
index 0000000..9ead3d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityRefImpl.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeEntityRef;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Entity Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityRefImpl#getEntityRef <em>Entity Ref</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeEntityRefImpl extends CubeLazyResolverImpl implements CubeEntityRef {
+	/**
+	 * The cached value of the '{@link #getEntityRef() <em>Entity Ref</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEntityRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeEntity entityRef;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeEntityRefImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_ENTITY_REF;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeEntity getEntityRef() {
+		return entityRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetEntityRef(CubeEntity newEntityRef, NotificationChain msgs) {
+		CubeEntity oldEntityRef = entityRef;
+		entityRef = newEntityRef;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF, oldEntityRef, newEntityRef);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setEntityRef(CubeEntity newEntityRef) {
+		if (newEntityRef != entityRef) {
+			NotificationChain msgs = null;
+			if (entityRef != null)
+				msgs = ((InternalEObject)entityRef).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF, null, msgs);
+			if (newEntityRef != null)
+				msgs = ((InternalEObject)newEntityRef).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF, null, msgs);
+			msgs = basicSetEntityRef(newEntityRef, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF, newEntityRef, newEntityRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF:
+				return basicSetEntityRef(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF:
+				return getEntityRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF:
+				setEntityRef((CubeEntity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF:
+				setEntityRef((CubeEntity)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_ENTITY_REF__ENTITY_REF:
+				return entityRef != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CubeEntityRefImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeHierarchyImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeHierarchyImpl.java
new file mode 100644
index 0000000..e8e5abb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeHierarchyImpl.java
@@ -0,0 +1,470 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Hierarchy</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#isHasAll <em>Has All</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#isAllMemberName <em>All Member Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#getAllMemberNameValue <em>All Member Name Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#isDefaultMember <em>Default Member</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#getDefaultMemberValue <em>Default Member Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#getCubeDimEntity <em>Cube Dim Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeHierarchyImpl extends CubeBaseImpl implements CubeHierarchy {
+	/**
+	 * The default value of the '{@link #isHasAll() <em>Has All</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasAll()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HAS_ALL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHasAll() <em>Has All</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHasAll()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean hasAll = HAS_ALL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAllMemberName() <em>All Member Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAllMemberName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ALL_MEMBER_NAME_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAllMemberName() <em>All Member Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAllMemberName()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean allMemberName = ALL_MEMBER_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAllMemberNameValue() <em>All Member Name Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAllMemberNameValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ALL_MEMBER_NAME_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAllMemberNameValue() <em>All Member Name Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAllMemberNameValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String allMemberNameValue = ALL_MEMBER_NAME_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDefaultMember() <em>Default Member</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDefaultMember()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DEFAULT_MEMBER_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDefaultMember() <em>Default Member</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDefaultMember()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean defaultMember = DEFAULT_MEMBER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDefaultMemberValue() <em>Default Member Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefaultMemberValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEFAULT_MEMBER_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDefaultMemberValue() <em>Default Member Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefaultMemberValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String defaultMemberValue = DEFAULT_MEMBER_VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCubeDimEntity() <em>Cube Dim Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCubeDimEntity()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeDimensionEntity cubeDimEntity;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeHierarchyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_HIERARCHY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHasAll() {
+		return hasAll;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHasAll(boolean newHasAll) {
+		boolean oldHasAll = hasAll;
+		hasAll = newHasAll;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_HIERARCHY__HAS_ALL, oldHasAll, hasAll));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAllMemberName() {
+		return allMemberName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAllMemberName(boolean newAllMemberName) {
+		boolean oldAllMemberName = allMemberName;
+		allMemberName = newAllMemberName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME, oldAllMemberName, allMemberName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAllMemberNameValue() {
+		return allMemberNameValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAllMemberNameValue(String newAllMemberNameValue) {
+		String oldAllMemberNameValue = allMemberNameValue;
+		allMemberNameValue = newAllMemberNameValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE, oldAllMemberNameValue, allMemberNameValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDefaultMember() {
+		return defaultMember;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDefaultMember(boolean newDefaultMember) {
+		boolean oldDefaultMember = defaultMember;
+		defaultMember = newDefaultMember;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER, oldDefaultMember, defaultMember));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDefaultMemberValue() {
+		return defaultMemberValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDefaultMemberValue(String newDefaultMemberValue) {
+		String oldDefaultMemberValue = defaultMemberValue;
+		defaultMemberValue = newDefaultMemberValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE, oldDefaultMemberValue, defaultMemberValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDimensionEntity getCubeDimEntity() {
+		return cubeDimEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCubeDimEntity(CubeDimensionEntity newCubeDimEntity, NotificationChain msgs) {
+		CubeDimensionEntity oldCubeDimEntity = cubeDimEntity;
+		cubeDimEntity = newCubeDimEntity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY, oldCubeDimEntity, newCubeDimEntity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCubeDimEntity(CubeDimensionEntity newCubeDimEntity) {
+		if (newCubeDimEntity != cubeDimEntity) {
+			NotificationChain msgs = null;
+			if (cubeDimEntity != null)
+				msgs = ((InternalEObject)cubeDimEntity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY, null, msgs);
+			if (newCubeDimEntity != null)
+				msgs = ((InternalEObject)newCubeDimEntity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY, null, msgs);
+			msgs = basicSetCubeDimEntity(newCubeDimEntity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY, newCubeDimEntity, newCubeDimEntity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY:
+				return basicSetCubeDimEntity(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_HIERARCHY__HAS_ALL:
+				return isHasAll();
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME:
+				return isAllMemberName();
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE:
+				return getAllMemberNameValue();
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER:
+				return isDefaultMember();
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE:
+				return getDefaultMemberValue();
+			case CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY:
+				return getCubeDimEntity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_HIERARCHY__HAS_ALL:
+				setHasAll((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME:
+				setAllMemberName((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE:
+				setAllMemberNameValue((String)newValue);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER:
+				setDefaultMember((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE:
+				setDefaultMemberValue((String)newValue);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY:
+				setCubeDimEntity((CubeDimensionEntity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_HIERARCHY__HAS_ALL:
+				setHasAll(HAS_ALL_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME:
+				setAllMemberName(ALL_MEMBER_NAME_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE:
+				setAllMemberNameValue(ALL_MEMBER_NAME_VALUE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER:
+				setDefaultMember(DEFAULT_MEMBER_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE:
+				setDefaultMemberValue(DEFAULT_MEMBER_VALUE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY:
+				setCubeDimEntity((CubeDimensionEntity)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_HIERARCHY__HAS_ALL:
+				return hasAll != HAS_ALL_EDEFAULT;
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME:
+				return allMemberName != ALL_MEMBER_NAME_EDEFAULT;
+			case CubeDSLPackage.CUBE_HIERARCHY__ALL_MEMBER_NAME_VALUE:
+				return ALL_MEMBER_NAME_VALUE_EDEFAULT == null ? allMemberNameValue != null : !ALL_MEMBER_NAME_VALUE_EDEFAULT.equals(allMemberNameValue);
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER:
+				return defaultMember != DEFAULT_MEMBER_EDEFAULT;
+			case CubeDSLPackage.CUBE_HIERARCHY__DEFAULT_MEMBER_VALUE:
+				return DEFAULT_MEMBER_VALUE_EDEFAULT == null ? defaultMemberValue != null : !DEFAULT_MEMBER_VALUE_EDEFAULT.equals(defaultMemberValue);
+			case CubeDSLPackage.CUBE_HIERARCHY__CUBE_DIM_ENTITY:
+				return cubeDimEntity != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (hasAll: ");
+		result.append(hasAll);
+		result.append(", allMemberName: ");
+		result.append(allMemberName);
+		result.append(", allMemberNameValue: ");
+		result.append(allMemberNameValue);
+		result.append(", defaultMember: ");
+		result.append(defaultMember);
+		result.append(", defaultMemberValue: ");
+		result.append(defaultMemberValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeHierarchyImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLazyResolverImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLazyResolverImpl.java
new file mode 100644
index 0000000..6a82126
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLazyResolverImpl.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Lazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeLazyResolverImpl extends MinimalEObjectImpl.Container implements CubeLazyResolver {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeLazyResolverImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_LAZY_RESOLVER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject eResolveProxy(final InternalEObject proxy) {
+		Resource _eResource = this.eResource();
+		ResourceSet _resourceSet = _eResource.getResourceSet();
+		return EcoreUtil3.resolve(proxy, _resourceSet);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case CubeDSLPackage.CUBE_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT:
+				return eResolveProxy((InternalEObject)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //CubeLazyResolverImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelImpl.java
new file mode 100644
index 0000000..db49ad1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelImpl.java
@@ -0,0 +1,403 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelLevelType;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelProp;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Level</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#isUniqueMembers <em>Unique Members</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#isLevelType <em>Level Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#getLevelColValue <em>Level Col Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#getLevelTypeValue <em>Level Type Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#getProperties <em>Properties</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeLevelImpl extends CubeBaseImpl implements CubeLevel {
+	/**
+	 * The default value of the '{@link #isUniqueMembers() <em>Unique Members</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUniqueMembers()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean UNIQUE_MEMBERS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isUniqueMembers() <em>Unique Members</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUniqueMembers()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uniqueMembers = UNIQUE_MEMBERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isLevelType() <em>Level Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLevelType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LEVEL_TYPE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLevelType() <em>Level Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLevelType()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean levelType = LEVEL_TYPE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getLevelColValue() <em>Level Col Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLevelColValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityFeature levelColValue;
+
+	/**
+	 * The default value of the '{@link #getLevelTypeValue() <em>Level Type Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLevelTypeValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CubeLevelLevelType LEVEL_TYPE_VALUE_EDEFAULT = CubeLevelLevelType.MDLEVEL_TYPE_TIME;
+
+	/**
+	 * The cached value of the '{@link #getLevelTypeValue() <em>Level Type Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLevelTypeValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeLevelLevelType levelTypeValue = LEVEL_TYPE_VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CubeLevelProp> properties;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeLevelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_LEVEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isUniqueMembers() {
+		return uniqueMembers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUniqueMembers(boolean newUniqueMembers) {
+		boolean oldUniqueMembers = uniqueMembers;
+		uniqueMembers = newUniqueMembers;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_LEVEL__UNIQUE_MEMBERS, oldUniqueMembers, uniqueMembers));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLevelType() {
+		return levelType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLevelType(boolean newLevelType) {
+		boolean oldLevelType = levelType;
+		levelType = newLevelType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE, oldLevelType, levelType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature getLevelColValue() {
+		if (levelColValue != null && levelColValue.eIsProxy()) {
+			InternalEObject oldLevelColValue = (InternalEObject)levelColValue;
+			levelColValue = (LEntityFeature)eResolveProxy(oldLevelColValue);
+			if (levelColValue != oldLevelColValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_LEVEL__LEVEL_COL_VALUE, oldLevelColValue, levelColValue));
+			}
+		}
+		return levelColValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature basicGetLevelColValue() {
+		return levelColValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLevelColValue(LEntityFeature newLevelColValue) {
+		LEntityFeature oldLevelColValue = levelColValue;
+		levelColValue = newLevelColValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_LEVEL__LEVEL_COL_VALUE, oldLevelColValue, levelColValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevelLevelType getLevelTypeValue() {
+		return levelTypeValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLevelTypeValue(CubeLevelLevelType newLevelTypeValue) {
+		CubeLevelLevelType oldLevelTypeValue = levelTypeValue;
+		levelTypeValue = newLevelTypeValue == null ? LEVEL_TYPE_VALUE_EDEFAULT : newLevelTypeValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE_VALUE, oldLevelTypeValue, levelTypeValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CubeLevelProp> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<CubeLevelProp>(CubeLevelProp.class, this, CubeDSLPackage.CUBE_LEVEL__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL__UNIQUE_MEMBERS:
+				return isUniqueMembers();
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE:
+				return isLevelType();
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_COL_VALUE:
+				if (resolve) return getLevelColValue();
+				return basicGetLevelColValue();
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE_VALUE:
+				return getLevelTypeValue();
+			case CubeDSLPackage.CUBE_LEVEL__PROPERTIES:
+				return getProperties();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL__UNIQUE_MEMBERS:
+				setUniqueMembers((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE:
+				setLevelType((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_COL_VALUE:
+				setLevelColValue((LEntityFeature)newValue);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE_VALUE:
+				setLevelTypeValue((CubeLevelLevelType)newValue);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends CubeLevelProp>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL__UNIQUE_MEMBERS:
+				setUniqueMembers(UNIQUE_MEMBERS_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE:
+				setLevelType(LEVEL_TYPE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_COL_VALUE:
+				setLevelColValue((LEntityFeature)null);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE_VALUE:
+				setLevelTypeValue(LEVEL_TYPE_VALUE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL__PROPERTIES:
+				getProperties().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL__UNIQUE_MEMBERS:
+				return uniqueMembers != UNIQUE_MEMBERS_EDEFAULT;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE:
+				return levelType != LEVEL_TYPE_EDEFAULT;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_COL_VALUE:
+				return levelColValue != null;
+			case CubeDSLPackage.CUBE_LEVEL__LEVEL_TYPE_VALUE:
+				return levelTypeValue != LEVEL_TYPE_VALUE_EDEFAULT;
+			case CubeDSLPackage.CUBE_LEVEL__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (uniqueMembers: ");
+		result.append(uniqueMembers);
+		result.append(", levelType: ");
+		result.append(levelType);
+		result.append(", levelTypeValue: ");
+		result.append(levelTypeValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeLevelImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelPropImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelPropImpl.java
new file mode 100644
index 0000000..6cac7c3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelPropImpl.java
@@ -0,0 +1,291 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelProp;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelPropType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Level Prop</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl#isType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl#getLevelPropColValue <em>Level Prop Col Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl#getTypeValue <em>Type Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeLevelPropImpl extends CubeBaseImpl implements CubeLevelProp {
+	/**
+	 * The default value of the '{@link #isType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TYPE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isType()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean type = TYPE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getLevelPropColValue() <em>Level Prop Col Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLevelPropColValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityFeature levelPropColValue;
+
+	/**
+	 * The default value of the '{@link #getTypeValue() <em>Type Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CubeLevelPropType TYPE_VALUE_EDEFAULT = CubeLevelPropType.STRING;
+
+	/**
+	 * The cached value of the '{@link #getTypeValue() <em>Type Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeLevelPropType typeValue = TYPE_VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeLevelPropImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_LEVEL_PROP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(boolean newType) {
+		boolean oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_LEVEL_PROP__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature getLevelPropColValue() {
+		if (levelPropColValue != null && levelPropColValue.eIsProxy()) {
+			InternalEObject oldLevelPropColValue = (InternalEObject)levelPropColValue;
+			levelPropColValue = (LEntityFeature)eResolveProxy(oldLevelPropColValue);
+			if (levelPropColValue != oldLevelPropColValue) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE, oldLevelPropColValue, levelPropColValue));
+			}
+		}
+		return levelPropColValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature basicGetLevelPropColValue() {
+		return levelPropColValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLevelPropColValue(LEntityFeature newLevelPropColValue) {
+		LEntityFeature oldLevelPropColValue = levelPropColValue;
+		levelPropColValue = newLevelPropColValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE, oldLevelPropColValue, levelPropColValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeLevelPropType getTypeValue() {
+		return typeValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeValue(CubeLevelPropType newTypeValue) {
+		CubeLevelPropType oldTypeValue = typeValue;
+		typeValue = newTypeValue == null ? TYPE_VALUE_EDEFAULT : newTypeValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_LEVEL_PROP__TYPE_VALUE, oldTypeValue, typeValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE:
+				return isType();
+			case CubeDSLPackage.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE:
+				if (resolve) return getLevelPropColValue();
+				return basicGetLevelPropColValue();
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE_VALUE:
+				return getTypeValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE:
+				setType((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE:
+				setLevelPropColValue((LEntityFeature)newValue);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE_VALUE:
+				setTypeValue((CubeLevelPropType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE:
+				setLevelPropColValue((LEntityFeature)null);
+				return;
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE_VALUE:
+				setTypeValue(TYPE_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE:
+				return type != TYPE_EDEFAULT;
+			case CubeDSLPackage.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE:
+				return levelPropColValue != null;
+			case CubeDSLPackage.CUBE_LEVEL_PROP__TYPE_VALUE:
+				return typeValue != TYPE_VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (type: ");
+		result.append(type);
+		result.append(", typeValue: ");
+		result.append(typeValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeLevelPropImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeMeasureImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeMeasureImpl.java
new file mode 100644
index 0000000..e8fe8c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeMeasureImpl.java
@@ -0,0 +1,291 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Measure</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl#isNotVisible <em>Not Visible</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl#getAggregator <em>Aggregator</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl#getMeasureCol <em>Measure Col</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeMeasureImpl extends CubeBaseImpl implements CubeMeasure {
+	/**
+	 * The default value of the '{@link #isNotVisible() <em>Not Visible</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isNotVisible()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean NOT_VISIBLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isNotVisible() <em>Not Visible</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isNotVisible()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean notVisible = NOT_VISIBLE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAggregator() <em>Aggregator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregator()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CubeAggregatorEnum AGGREGATOR_EDEFAULT = CubeAggregatorEnum.SUM;
+
+	/**
+	 * The cached value of the '{@link #getAggregator() <em>Aggregator</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAggregator()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeAggregatorEnum aggregator = AGGREGATOR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getMeasureCol() <em>Measure Col</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMeasureCol()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityFeature measureCol;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeMeasureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_MEASURE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isNotVisible() {
+		return notVisible;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNotVisible(boolean newNotVisible) {
+		boolean oldNotVisible = notVisible;
+		notVisible = newNotVisible;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_MEASURE__NOT_VISIBLE, oldNotVisible, notVisible));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeAggregatorEnum getAggregator() {
+		return aggregator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAggregator(CubeAggregatorEnum newAggregator) {
+		CubeAggregatorEnum oldAggregator = aggregator;
+		aggregator = newAggregator == null ? AGGREGATOR_EDEFAULT : newAggregator;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_MEASURE__AGGREGATOR, oldAggregator, aggregator));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature getMeasureCol() {
+		if (measureCol != null && measureCol.eIsProxy()) {
+			InternalEObject oldMeasureCol = (InternalEObject)measureCol;
+			measureCol = (LEntityFeature)eResolveProxy(oldMeasureCol);
+			if (measureCol != oldMeasureCol) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, CubeDSLPackage.CUBE_MEASURE__MEASURE_COL, oldMeasureCol, measureCol));
+			}
+		}
+		return measureCol;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature basicGetMeasureCol() {
+		return measureCol;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMeasureCol(LEntityFeature newMeasureCol) {
+		LEntityFeature oldMeasureCol = measureCol;
+		measureCol = newMeasureCol;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_MEASURE__MEASURE_COL, oldMeasureCol, measureCol));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MEASURE__NOT_VISIBLE:
+				return isNotVisible();
+			case CubeDSLPackage.CUBE_MEASURE__AGGREGATOR:
+				return getAggregator();
+			case CubeDSLPackage.CUBE_MEASURE__MEASURE_COL:
+				if (resolve) return getMeasureCol();
+				return basicGetMeasureCol();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MEASURE__NOT_VISIBLE:
+				setNotVisible((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_MEASURE__AGGREGATOR:
+				setAggregator((CubeAggregatorEnum)newValue);
+				return;
+			case CubeDSLPackage.CUBE_MEASURE__MEASURE_COL:
+				setMeasureCol((LEntityFeature)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MEASURE__NOT_VISIBLE:
+				setNotVisible(NOT_VISIBLE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_MEASURE__AGGREGATOR:
+				setAggregator(AGGREGATOR_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_MEASURE__MEASURE_COL:
+				setMeasureCol((LEntityFeature)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MEASURE__NOT_VISIBLE:
+				return notVisible != NOT_VISIBLE_EDEFAULT;
+			case CubeDSLPackage.CUBE_MEASURE__AGGREGATOR:
+				return aggregator != AGGREGATOR_EDEFAULT;
+			case CubeDSLPackage.CUBE_MEASURE__MEASURE_COL:
+				return measureCol != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (notVisible: ");
+		result.append(notVisible);
+		result.append(", aggregator: ");
+		result.append(aggregator);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeMeasureImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeModelImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeModelImpl.java
new file mode 100644
index 0000000..e661a41
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeModelImpl.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeModel;
+import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeModelImpl#getPckg <em>Pckg</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeModelImpl extends CubeLazyResolverImpl implements CubeModel {
+	/**
+	 * The cached value of the '{@link #getPckg() <em>Pckg</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPckg()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubePackage pckg;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubePackage getPckg() {
+		return pckg;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPckg(CubePackage newPckg, NotificationChain msgs) {
+		CubePackage oldPckg = pckg;
+		pckg = newPckg;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_MODEL__PCKG, oldPckg, newPckg);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPckg(CubePackage newPckg) {
+		if (newPckg != pckg) {
+			NotificationChain msgs = null;
+			if (pckg != null)
+				msgs = ((InternalEObject)pckg).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_MODEL__PCKG, null, msgs);
+			if (newPckg != null)
+				msgs = ((InternalEObject)newPckg).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_MODEL__PCKG, null, msgs);
+			msgs = basicSetPckg(newPckg, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_MODEL__PCKG, newPckg, newPckg));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__PCKG:
+				return basicSetPckg(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__PCKG:
+				return getPckg();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__PCKG:
+				setPckg((CubePackage)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__PCKG:
+				setPckg((CubePackage)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__PCKG:
+				return pckg != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CubeModelImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubePackageImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubePackageImpl.java
new file mode 100644
index 0000000..a879b0b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubePackageImpl.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Package</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl#getDimensions <em>Dimensions</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl#getCubes <em>Cubes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubePackageImpl extends LPackageImpl implements CubePackage {
+	/**
+	 * The cached value of the '{@link #getDimensions() <em>Dimensions</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDimensions()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CubeDimension> dimensions;
+
+	/**
+	 * The cached value of the '{@link #getCubes() <em>Cubes</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCubes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CubeType> cubes;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubePackageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_PACKAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CubeDimension> getDimensions() {
+		if (dimensions == null) {
+			dimensions = new EObjectContainmentEList<CubeDimension>(CubeDimension.class, this, CubeDSLPackage.CUBE_PACKAGE__DIMENSIONS);
+		}
+		return dimensions;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CubeType> getCubes() {
+		if (cubes == null) {
+			cubes = new EObjectContainmentEList<CubeType>(CubeType.class, this, CubeDSLPackage.CUBE_PACKAGE__CUBES);
+		}
+		return cubes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_PACKAGE__DIMENSIONS:
+				return ((InternalEList<?>)getDimensions()).basicRemove(otherEnd, msgs);
+			case CubeDSLPackage.CUBE_PACKAGE__CUBES:
+				return ((InternalEList<?>)getCubes()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_PACKAGE__DIMENSIONS:
+				return getDimensions();
+			case CubeDSLPackage.CUBE_PACKAGE__CUBES:
+				return getCubes();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_PACKAGE__DIMENSIONS:
+				getDimensions().clear();
+				getDimensions().addAll((Collection<? extends CubeDimension>)newValue);
+				return;
+			case CubeDSLPackage.CUBE_PACKAGE__CUBES:
+				getCubes().clear();
+				getCubes().addAll((Collection<? extends CubeType>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_PACKAGE__DIMENSIONS:
+				getDimensions().clear();
+				return;
+			case CubeDSLPackage.CUBE_PACKAGE__CUBES:
+				getCubes().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_PACKAGE__DIMENSIONS:
+				return dimensions != null && !dimensions.isEmpty();
+			case CubeDSLPackage.CUBE_PACKAGE__CUBES:
+				return cubes != null && !cubes.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CubePackageImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeEntityImpl.java
new file mode 100644
index 0000000..ecec568
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeEntityImpl.java
@@ -0,0 +1,269 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Type Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl#isKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl#getDimensionUsages <em>Dimension Usages</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl#getMeasures <em>Measures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeTypeEntityImpl extends CubeEntityRefImpl implements CubeTypeEntity {
+	/**
+	 * The default value of the '{@link #isKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean KEY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean key = KEY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDimensionUsages() <em>Dimension Usages</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDimensionUsages()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CubeDimensionUsage> dimensionUsages;
+
+	/**
+	 * The cached value of the '{@link #getMeasures() <em>Measures</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMeasures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CubeMeasure> measures;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeTypeEntityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_TYPE_ENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKey(boolean newKey) {
+		boolean oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_TYPE_ENTITY__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CubeDimensionUsage> getDimensionUsages() {
+		if (dimensionUsages == null) {
+			dimensionUsages = new EObjectContainmentEList<CubeDimensionUsage>(CubeDimensionUsage.class, this, CubeDSLPackage.CUBE_TYPE_ENTITY__DIMENSION_USAGES);
+		}
+		return dimensionUsages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CubeMeasure> getMeasures() {
+		if (measures == null) {
+			measures = new EObjectContainmentEList<CubeMeasure>(CubeMeasure.class, this, CubeDSLPackage.CUBE_TYPE_ENTITY__MEASURES);
+		}
+		return measures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__DIMENSION_USAGES:
+				return ((InternalEList<?>)getDimensionUsages()).basicRemove(otherEnd, msgs);
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__MEASURES:
+				return ((InternalEList<?>)getMeasures()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__KEY:
+				return isKey();
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__DIMENSION_USAGES:
+				return getDimensionUsages();
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__MEASURES:
+				return getMeasures();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__KEY:
+				setKey((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__DIMENSION_USAGES:
+				getDimensionUsages().clear();
+				getDimensionUsages().addAll((Collection<? extends CubeDimensionUsage>)newValue);
+				return;
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__MEASURES:
+				getMeasures().clear();
+				getMeasures().addAll((Collection<? extends CubeMeasure>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__KEY:
+				setKey(KEY_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__DIMENSION_USAGES:
+				getDimensionUsages().clear();
+				return;
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__MEASURES:
+				getMeasures().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__KEY:
+				return key != KEY_EDEFAULT;
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__DIMENSION_USAGES:
+				return dimensionUsages != null && !dimensionUsages.isEmpty();
+			case CubeDSLPackage.CUBE_TYPE_ENTITY__MEASURES:
+				return measures != null && !measures.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeTypeEntityImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeImpl.java
new file mode 100644
index 0000000..fbf79d9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeImpl.java
@@ -0,0 +1,308 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cube Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl#isDefaultMeasure <em>Default Measure</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl#getDefaultMeasureValue <em>Default Measure Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl#getCubeTypeEntity <em>Cube Type Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CubeTypeImpl extends CubeBaseImpl implements CubeType {
+	/**
+	 * The default value of the '{@link #isDefaultMeasure() <em>Default Measure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDefaultMeasure()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DEFAULT_MEASURE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDefaultMeasure() <em>Default Measure</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDefaultMeasure()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean defaultMeasure = DEFAULT_MEASURE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDefaultMeasureValue() <em>Default Measure Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefaultMeasureValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEFAULT_MEASURE_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDefaultMeasureValue() <em>Default Measure Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDefaultMeasureValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String defaultMeasureValue = DEFAULT_MEASURE_VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCubeTypeEntity() <em>Cube Type Entity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCubeTypeEntity()
+	 * @generated
+	 * @ordered
+	 */
+	protected CubeTypeEntity cubeTypeEntity;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return CubeDSLPackage.Literals.CUBE_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDefaultMeasure() {
+		return defaultMeasure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDefaultMeasure(boolean newDefaultMeasure) {
+		boolean oldDefaultMeasure = defaultMeasure;
+		defaultMeasure = newDefaultMeasure;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE, oldDefaultMeasure, defaultMeasure));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDefaultMeasureValue() {
+		return defaultMeasureValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDefaultMeasureValue(String newDefaultMeasureValue) {
+		String oldDefaultMeasureValue = defaultMeasureValue;
+		defaultMeasureValue = newDefaultMeasureValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE_VALUE, oldDefaultMeasureValue, defaultMeasureValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeTypeEntity getCubeTypeEntity() {
+		return cubeTypeEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetCubeTypeEntity(CubeTypeEntity newCubeTypeEntity, NotificationChain msgs) {
+		CubeTypeEntity oldCubeTypeEntity = cubeTypeEntity;
+		cubeTypeEntity = newCubeTypeEntity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY, oldCubeTypeEntity, newCubeTypeEntity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCubeTypeEntity(CubeTypeEntity newCubeTypeEntity) {
+		if (newCubeTypeEntity != cubeTypeEntity) {
+			NotificationChain msgs = null;
+			if (cubeTypeEntity != null)
+				msgs = ((InternalEObject)cubeTypeEntity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY, null, msgs);
+			if (newCubeTypeEntity != null)
+				msgs = ((InternalEObject)newCubeTypeEntity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY, null, msgs);
+			msgs = basicSetCubeTypeEntity(newCubeTypeEntity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY, newCubeTypeEntity, newCubeTypeEntity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY:
+				return basicSetCubeTypeEntity(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE:
+				return isDefaultMeasure();
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE_VALUE:
+				return getDefaultMeasureValue();
+			case CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY:
+				return getCubeTypeEntity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE:
+				setDefaultMeasure((Boolean)newValue);
+				return;
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE_VALUE:
+				setDefaultMeasureValue((String)newValue);
+				return;
+			case CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY:
+				setCubeTypeEntity((CubeTypeEntity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE:
+				setDefaultMeasure(DEFAULT_MEASURE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE_VALUE:
+				setDefaultMeasureValue(DEFAULT_MEASURE_VALUE_EDEFAULT);
+				return;
+			case CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY:
+				setCubeTypeEntity((CubeTypeEntity)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE:
+				return defaultMeasure != DEFAULT_MEASURE_EDEFAULT;
+			case CubeDSLPackage.CUBE_TYPE__DEFAULT_MEASURE_VALUE:
+				return DEFAULT_MEASURE_VALUE_EDEFAULT == null ? defaultMeasureValue != null : !DEFAULT_MEASURE_VALUE_EDEFAULT.equals(defaultMeasureValue);
+			case CubeDSLPackage.CUBE_TYPE__CUBE_TYPE_ENTITY:
+				return cubeTypeEntity != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (defaultMeasure: ");
+		result.append(defaultMeasure);
+		result.append(", defaultMeasureValue: ");
+		result.append(defaultMeasureValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CubeTypeImpl
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLAdapterFactory.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLAdapterFactory.java
new file mode 100644
index 0000000..44056de
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLAdapterFactory.java
@@ -0,0 +1,440 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+import org.eclipse.osbp.xtext.cubedsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
+ * @generated
+ */
+public class CubeDSLAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static CubeDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDSLAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = CubeDSLPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CubeDSLSwitch<Adapter> modelSwitch =
+		new CubeDSLSwitch<Adapter>() {
+			@Override
+			public Adapter caseCubeModel(CubeModel object) {
+				return createCubeModelAdapter();
+			}
+			@Override
+			public Adapter caseCubeLazyResolver(CubeLazyResolver object) {
+				return createCubeLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseCubePackage(CubePackage object) {
+				return createCubePackageAdapter();
+			}
+			@Override
+			public Adapter caseCubeBase(CubeBase object) {
+				return createCubeBaseAdapter();
+			}
+			@Override
+			public Adapter caseCubeType(CubeType object) {
+				return createCubeTypeAdapter();
+			}
+			@Override
+			public Adapter caseCubeDimensionUsage(CubeDimensionUsage object) {
+				return createCubeDimensionUsageAdapter();
+			}
+			@Override
+			public Adapter caseCubeDimension(CubeDimension object) {
+				return createCubeDimensionAdapter();
+			}
+			@Override
+			public Adapter caseCubeHierarchy(CubeHierarchy object) {
+				return createCubeHierarchyAdapter();
+			}
+			@Override
+			public Adapter caseCubeEntity(CubeEntity object) {
+				return createCubeEntityAdapter();
+			}
+			@Override
+			public Adapter caseCubeEntityRef(CubeEntityRef object) {
+				return createCubeEntityRefAdapter();
+			}
+			@Override
+			public Adapter caseCubeTypeEntity(CubeTypeEntity object) {
+				return createCubeTypeEntityAdapter();
+			}
+			@Override
+			public Adapter caseCubeDimensionEntity(CubeDimensionEntity object) {
+				return createCubeDimensionEntityAdapter();
+			}
+			@Override
+			public Adapter caseCubeDimensionEntityEntity(CubeDimensionEntityEntity object) {
+				return createCubeDimensionEntityEntityAdapter();
+			}
+			@Override
+			public Adapter caseCubeLevel(CubeLevel object) {
+				return createCubeLevelAdapter();
+			}
+			@Override
+			public Adapter caseCubeLevelProp(CubeLevelProp object) {
+				return createCubeLevelPropAdapter();
+			}
+			@Override
+			public Adapter caseCubeMeasure(CubeMeasure object) {
+				return createCubeMeasureAdapter();
+			}
+			@Override
+			public Adapter caseLLazyResolver(LLazyResolver object) {
+				return createLLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseLPackage(LPackage object) {
+				return createLPackageAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeModel <em>Cube Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeModel
+	 * @generated
+	 */
+	public Adapter createCubeModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver <em>Cube Lazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver
+	 * @generated
+	 */
+	public Adapter createCubeLazyResolverAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubePackage <em>Cube Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubePackage
+	 * @generated
+	 */
+	public Adapter createCubePackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeBase <em>Cube Base</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeBase
+	 * @generated
+	 */
+	public Adapter createCubeBaseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeType <em>Cube Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeType
+	 * @generated
+	 */
+	public Adapter createCubeTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage <em>Cube Dimension Usage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage
+	 * @generated
+	 */
+	public Adapter createCubeDimensionUsageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension <em>Cube Dimension</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimension
+	 * @generated
+	 */
+	public Adapter createCubeDimensionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy <em>Cube Hierarchy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
+	 * @generated
+	 */
+	public Adapter createCubeHierarchyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity <em>Cube Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntity
+	 * @generated
+	 */
+	public Adapter createCubeEntityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeEntityRef <em>Cube Entity Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeEntityRef
+	 * @generated
+	 */
+	public Adapter createCubeEntityRefAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity <em>Cube Type Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity
+	 * @generated
+	 */
+	public Adapter createCubeTypeEntityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity <em>Cube Dimension Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity
+	 * @generated
+	 */
+	public Adapter createCubeDimensionEntityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity <em>Cube Dimension Entity Entity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity
+	 * @generated
+	 */
+	public Adapter createCubeDimensionEntityEntityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel <em>Cube Level</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevel
+	 * @generated
+	 */
+	public Adapter createCubeLevelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp <em>Cube Level Prop</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeLevelProp
+	 * @generated
+	 */
+	public Adapter createCubeLevelPropAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure <em>Cube Measure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.xtext.cubedsl.CubeMeasure
+	 * @generated
+	 */
+	public Adapter createCubeMeasureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver <em>LLazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver
+	 * @generated
+	 */
+	public Adapter createLLazyResolverAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage <em>LPackage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LPackage
+	 * @generated
+	 */
+	public Adapter createLPackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //CubeDSLAdapterFactory
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLSwitch.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLSwitch.java
new file mode 100644
index 0000000..c275317
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLSwitch.java
@@ -0,0 +1,495 @@
+/**
+ * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		José C. Domínguez - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.xtext.cubedsl.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+import org.eclipse.osbp.xtext.cubedsl.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
+ * @generated
+ */
+public class CubeDSLSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static CubeDSLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CubeDSLSwitch() {
+		if (modelPackage == null) {
+			modelPackage = CubeDSLPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case CubeDSLPackage.CUBE_MODEL: {
+				CubeModel cubeModel = (CubeModel)theEObject;
+				T result = caseCubeModel(cubeModel);
+				if (result == null) result = caseCubeLazyResolver(cubeModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_LAZY_RESOLVER: {
+				CubeLazyResolver cubeLazyResolver = (CubeLazyResolver)theEObject;
+				T result = caseCubeLazyResolver(cubeLazyResolver);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_PACKAGE: {
+				CubePackage cubePackage = (CubePackage)theEObject;
+				T result = caseCubePackage(cubePackage);
+				if (result == null) result = caseLPackage(cubePackage);
+				if (result == null) result = caseLLazyResolver(cubePackage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_BASE: {
+				CubeBase cubeBase = (CubeBase)theEObject;
+				T result = caseCubeBase(cubeBase);
+				if (result == null) result = caseCubeLazyResolver(cubeBase);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_TYPE: {
+				CubeType cubeType = (CubeType)theEObject;
+				T result = caseCubeType(cubeType);
+				if (result == null) result = caseCubeBase(cubeType);
+				if (result == null) result = caseCubeLazyResolver(cubeType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE: {
+				CubeDimensionUsage cubeDimensionUsage = (CubeDimensionUsage)theEObject;
+				T result = caseCubeDimensionUsage(cubeDimensionUsage);
+				if (result == null) result = caseCubeLazyResolver(cubeDimensionUsage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_DIMENSION: {
+				CubeDimension cubeDimension = (CubeDimension)theEObject;
+				T result = caseCubeDimension(cubeDimension);
+				if (result == null) result = caseCubeBase(cubeDimension);
+				if (result == null) result = caseCubeLazyResolver(cubeDimension);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_HIERARCHY: {
+				CubeHierarchy cubeHierarchy = (CubeHierarchy)theEObject;
+				T result = caseCubeHierarchy(cubeHierarchy);
+				if (result == null) result = caseCubeBase(cubeHierarchy);
+				if (result == null) result = caseCubeLazyResolver(cubeHierarchy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_ENTITY: {
+				CubeEntity cubeEntity = (CubeEntity)theEObject;
+				T result = caseCubeEntity(cubeEntity);
+				if (result == null) result = caseCubeLazyResolver(cubeEntity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_ENTITY_REF: {
+				CubeEntityRef cubeEntityRef = (CubeEntityRef)theEObject;
+				T result = caseCubeEntityRef(cubeEntityRef);
+				if (result == null) result = caseCubeLazyResolver(cubeEntityRef);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_TYPE_ENTITY: {
+				CubeTypeEntity cubeTypeEntity = (CubeTypeEntity)theEObject;
+				T result = caseCubeTypeEntity(cubeTypeEntity);
+				if (result == null) result = caseCubeEntityRef(cubeTypeEntity);
+				if (result == null) result = caseCubeLazyResolver(cubeTypeEntity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY: {
+				CubeDimensionEntity cubeDimensionEntity = (CubeDimensionEntity)theEObject;
+				T result = caseCubeDimensionEntity(cubeDimensionEntity);
+				if (result == null) result = caseCubeEntityRef(cubeDimensionEntity);
+				if (result == null) result = caseCubeLazyResolver(cubeDimensionEntity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY: {
+				CubeDimensionEntityEntity cubeDimensionEntityEntity = (CubeDimensionEntityEntity)theEObject;
+				T result = caseCubeDimensionEntityEntity(cubeDimensionEntityEntity);
+				if (result == null) result = caseCubeDimensionEntity(cubeDimensionEntityEntity);
+				if (result == null) result = caseCubeEntityRef(cubeDimensionEntityEntity);
+				if (result == null) result = caseCubeLazyResolver(cubeDimensionEntityEntity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_LEVEL: {
+				CubeLevel cubeLevel = (CubeLevel)theEObject;
+				T result = caseCubeLevel(cubeLevel);
+				if (result == null) result = caseCubeBase(cubeLevel);
+				if (result == null) result = caseCubeLazyResolver(cubeLevel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_LEVEL_PROP: {
+				CubeLevelProp cubeLevelProp = (CubeLevelProp)theEObject;
+				T result = caseCubeLevelProp(cubeLevelProp);
+				if (result == null) result = caseCubeBase(cubeLevelProp);
+				if (result == null) result = caseCubeLazyResolver(cubeLevelProp);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case CubeDSLPackage.CUBE_MEASURE: {
+				CubeMeasure cubeMeasure = (CubeMeasure)theEObject;
+				T result = caseCubeMeasure(cubeMeasure);
+				if (result == null) result = caseCubeBase(cubeMeasure);
+				if (result == null) result = caseCubeLazyResolver(cubeMeasure);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeModel(CubeModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Lazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Lazy Resolver</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeLazyResolver(CubeLazyResolver object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Package</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubePackage(CubePackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Base</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Base</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeBase(CubeBase object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeType(CubeType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Dimension Usage</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Dimension Usage</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeDimensionUsage(CubeDimensionUsage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Dimension</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Dimension</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeDimension(CubeDimension object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Hierarchy</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Hierarchy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeHierarchy(CubeHierarchy object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Entity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeEntity(CubeEntity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Entity Ref</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Entity Ref</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeEntityRef(CubeEntityRef object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Type Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Type Entity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeTypeEntity(CubeTypeEntity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Dimension Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Dimension Entity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeDimensionEntity(CubeDimensionEntity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Dimension Entity Entity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Dimension Entity Entity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeDimensionEntityEntity(CubeDimensionEntityEntity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Level</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Level</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeLevel(CubeLevel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Level Prop</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Level Prop</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeLevelProp(CubeLevelProp object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cube Measure</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cube Measure</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCubeMeasure(CubeMeasure object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LLazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LLazy Resolver</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLLazyResolver(LLazyResolver object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LPackage</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LPackage</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLPackage(LPackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //CubeDSLSwitch
diff --git a/org.eclipse.osbp.xtext.cubedsl/epl-v10.html b/org.eclipse.osbp.xtext.cubedsl/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/epl-v10.html
@@ -0,0 +1,259 @@
+<!--?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.cubedsl/license.html b/org.eclipse.osbp.xtext.cubedsl/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/license.html
@@ -0,0 +1,164 @@
+<!--?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">
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>February 1, 2011</p>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>
+
+<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>
+
+<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>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>
+
+<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>
+
+<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>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>
+
+<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><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
diff --git a/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore b/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore
new file mode 100644
index 0000000..937b1e9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore
@@ -0,0 +1,160 @@
+@GenModel(fileExtensions="cube")
+@GenModel(modelName="CubeDSL")
+@GenModel(prefix="CubeDSL")
+@GenModel(updateClasspath="false")
+@GenModel(copyrightText="Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials 
+ are made available under the terms of the Eclipse Public License v1.0 
+ which accompanies this distribution, and is available at 
+ http://www.eclipse.org/legal/epl-v10.html 
+
+ Based on ideas from Xtext, Xtend, Xcore
+  
+ Contributors:  
+ 		José C. Domínguez - Initial implementation
+ ")
+@Ecore(nsURI="http://osbp.eclipse.org/xtext/cubedsl/CubeDSL")
+@Ecore(nsPrefix="cubeDSL")
+@Ecore(rootPackage="cubeDSL")
+package org.eclipse.osbp.xtext.cubedsl
+
+import GenModel
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
+import org.eclipse.emf.ecore.InternalEObject
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+import org.eclipse.emf.ecore.EObject
+
+class CubeModel extends CubeLazyResolver {
+	contains CubePackage pckg
+}
+
+type InternalEObject wraps InternalEObject
+
+class CubeLazyResolver {
+	op EObject eResolveProxy(InternalEObject proxy) {
+		return EcoreUtil3.resolve(proxy, this.eResource().resourceSet);
+	}
+}
+
+class CubePackage extends LPackage{
+	contains CubeDimension[] dimensions
+	contains CubeType[] cubes
+}
+
+class CubeBase extends CubeLazyResolver{
+	String name
+}
+
+class CubeType extends CubeBase {
+	boolean defaultMeasure
+	String defaultMeasureValue
+	contains CubeTypeEntity cubeTypeEntity
+}
+
+class CubeDimensionUsage extends CubeLazyResolver {
+	refers CubeDimension sourceValue
+	refers LEntityFeature overValue
+}
+
+class CubeDimension extends CubeBase {
+	boolean typeTime
+	contains CubeHierarchy[] hierarchies
+}
+
+class CubeHierarchy extends CubeBase {
+	boolean hasAll
+	boolean allMemberName
+	String allMemberNameValue
+	boolean defaultMember
+	String defaultMemberValue
+	contains CubeDimensionEntity cubeDimEntity
+}
+ 
+class CubeEntity extends CubeLazyResolver {
+	boolean key
+	refers LEntity entityValue
+	refers LEntityFeature keyValue
+}
+
+class CubeEntityRef extends CubeLazyResolver {
+	contains CubeEntity entityRef
+}
+
+class CubeTypeEntity extends CubeEntityRef{
+	boolean key
+	contains CubeDimensionUsage[] dimensionUsages
+	contains CubeMeasure[] measures
+}
+
+class CubeDimensionEntity extends CubeEntityRef{
+	boolean key
+	contains CubeLevel[] hierarchLevels
+	contains CubeDimensionEntityEntity dimEntity
+}
+
+class CubeDimensionEntityEntity extends CubeDimensionEntity{
+	refers LEntityFeature overValue
+}
+
+class CubeLevel extends CubeBase {
+	boolean uniqueMembers
+	boolean levelType
+	refers LEntityFeature levelColValue
+	CubeLevelLevelType levelTypeValue
+	contains CubeLevelProp[] properties
+}
+
+class CubeLevelProp extends CubeBase {
+	boolean ^type
+	refers LEntityFeature levelPropColValue
+	CubeLevelPropType typeValue
+}
+
+class CubeMeasure extends CubeBase {
+	boolean notVisible
+	CubeAggregatorEnum aggregator
+	refers LEntityFeature measureCol
+}
+
+enum CubeAggregatorEnum {
+	 SUM as 'sum'
+	 COUNT as 'count'
+	 MIN as 'min'
+	 MAX as 'max'
+	 AVG as 'avg'
+	 DSC as 'distinct-count'
+}
+	 
+enum CubeLevelPropType{
+	STRING as 'String'
+	NUMERIC as 'Numeric'
+	INTEGER as 'Integer'
+	BOOLEAN as 'Boolean'
+	DATE as 'Date'
+	TIME as 'Time'
+	TIMESTAMP as 'Timestamp'
+}
+
+enum CubeLevelLevelType{
+	MDLEVEL_TYPE_TIME as 'Time'
+	MDLEVEL_TYPE_TIME_YEARS as 'TimeYears'
+	MDLEVEL_TYPE_TIME_HALF_YEARS as 'TimeHalfYears'
+	MDLEVEL_TYPE_TIME_QUARTERS as 'TimeQuarters'
+	MDLEVEL_TYPE_TIME_MONTHS as 'TimeMonths'
+	MDLEVEL_TYPE_TIME_WEEKS as 'TimeWeeks'
+	MDLEVEL_TYPE_TIME_DAYS as 'TimeDays'
+	MDLEVEL_TYPE_TIME_HOURS as 'TimeHours'
+	MDLEVEL_TYPE_TIME_MINUTES as 'TimeMinutes'
+	MDLEVEL_TYPE_TIME_SECONDS as 'TimeSeconds'
+}
+		
+
+
+
+	
+	
+	
+	
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl/plugin.properties b/org.eclipse.osbp.xtext.cubedsl/plugin.properties
new file mode 100644
index 0000000..899359b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#   
+#  Contributors:  
+#  		Florian Pirchner - Initial implementation 
+#  
+
+pluginName = Cube DSL Model
+providerName = Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
diff --git a/org.eclipse.osbp.xtext.cubedsl/plugin.xml b/org.eclipse.osbp.xtext.cubedsl/plugin.xml
new file mode 100644
index 0000000..2990029
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated CubeDSL -->
+      <package
+            uri="http://osbp.eclipse.org/xtext/cubedsl/CubeDSL"
+            class="org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage"
+            genModel="model/CubeDSL.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.xtext.cubedsl/pom.xml b/org.eclipse.osbp.xtext.cubedsl/pom.xml
new file mode 100644
index 0000000..5c6545d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+		<artifactId>org.eclipse.osbp.xtext.cubedsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.xtext.cubedsl</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>add-source</id>
+						<phase>initialize</phase>
+						<goals>
+							<goal>add-source</goal>
+						</goals>
+						<configuration>
+							<sources>
+								<source>src-gen</source>
+								<source>xtend-gen</source>
+								<source>emf-gen</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/README.txt b/org.eclipse.osbp.xtext.cubedsl/src-gen/README.txt
new file mode 100644
index 0000000..bbbe557
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/README.txt
@@ -0,0 +1 @@
+dummy file needed for git for necessary but empty directories!
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/AbstractCubeDSLRuntimeModule.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/AbstractCubeDSLRuntimeModule.java
new file mode 100644
index 0000000..46d3ec7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/AbstractCubeDSLRuntimeModule.java
@@ -0,0 +1,348 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.xtext.cubedsl.CubeDSLRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractCubeDSLRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/xtext/cubedsl/CubeDSL.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.xtext.cubedsl.CubeDSL");
+	}
+	
+	public void configureFileExtensions(Binder binder) {
+		if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("cube");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.xtext.cubedsl.serializer.CubeDSLSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.xtext.cubedsl.serializer.CubeDSLSyntacticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.ISerializer> bindISerializer() {
+		return org.eclipse.xtext.serializer.impl.Serializer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+		return org.eclipse.osbp.xtext.cubedsl.parser.antlr.CubeDSLParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return org.eclipse.osbp.xtext.cubedsl.parser.antlr.CubeDSLAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer> provideInternalCubeDSLLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureRuntimeLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.ValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.xtext.cubedsl.validation.CubeDSLValidator> bindCubeDSLValidator() {
+		return org.eclipse.osbp.xtext.cubedsl.validation.CubeDSLValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+		binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return org.eclipse.osbp.xtext.cubedsl.formatting.CubeDSLFormatter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public org.eclipse.xtext.common.types.TypesFactory bindTypesFactoryToInstance() {
+		return org.eclipse.xtext.common.types.TypesFactory.eINSTANCE;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return org.eclipse.xtext.common.types.access.ClasspathTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.ClasspathBasedTypeScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.interpreter.IEvaluationContext> bindIEvaluationContext() {
+		return org.eclipse.xtext.xbase.interpreter.impl.DefaultEvaluationContext.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.interpreter.IExpressionInterpreter> bindIExpressionInterpreter() {
+		return org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameConverter> bindIQualifiedNameConverter() {
+		return org.eclipse.xtext.xbase.XbaseQualifiedNameConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.conversion.IValueConverterService> bindIValueConverterService() {
+		return org.eclipse.xtext.xbase.conversion.XbaseValueConverterService.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureLinkingIScopeProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.linking.LinkingScopeProviderBinding.class).to(org.eclipse.xtext.xbase.scoping.batch.IBatchScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureSerializerIScopeProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class).to(org.eclipse.xtext.xbase.serializer.SerializerScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.xbase.scoping.XbaseImportedNamespaceScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return org.eclipse.xtext.xbase.linking.XbaseLazyLinker.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return org.eclipse.xtext.xbase.resource.BatchLinkableResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator> bindJvmTypeReferencesValidator() {
+		return org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider() {
+		return org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
+		return org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IResourceDescription.Manager> bindIResourceDescription$Manager() {
+		return org.eclipse.xtext.resource.DerivedStateAwareResourceDescriptionManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return org.eclipse.xtext.xbase.compiler.JvmModelGenerator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public org.eclipse.xtext.xtype.XtypeFactory bindXtypeFactoryToInstance() {
+		return org.eclipse.xtext.xtype.XtypeFactory.eINSTANCE;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.debug.IStratumBreakpointSupport> bindIStratumBreakpointSupport() {
+		return org.eclipse.xtext.xbase.debug.XbaseStratumBreakpointSupport.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.LineSeparatorHarmonizer> bindLineSeparatorHarmonizer() {
+		return org.eclipse.xtext.xbase.compiler.output.TraceAwarePostProcessor.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
+		return org.eclipse.xtext.xbase.resource.XbaseResourceDescriptionStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.SeverityConverter> bindSeverityConverter() {
+		return org.eclipse.xtext.xbase.validation.XbaseSeverityConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
+		return org.eclipse.xtext.xbase.validation.XbaseConfigurableIssueCodes.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.EObjectAtOffsetHelper> bindEObjectAtOffsetHelper() {
+		return org.eclipse.xtext.xbase.linking.BrokenConstructorCallAwareEObjectAtOffsetHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.CancelableDiagnostician> bindCancelableDiagnostician() {
+		return org.eclipse.xtext.xbase.validation.XbaseDiagnostician.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.scoping.featurecalls.StaticImplicitMethodsFeatureForTypeProvider.ExtensionClassNameProvider> bindStaticImplicitMethodsFeatureForTypeProvider$ExtensionClassNameProvider() {
+		return org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedTypesAdapter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtend.lib.macro.file.MutableFileSystemSupport> bindMutableFileSystemSupport() {
+		return org.eclipse.xtext.xbase.file.JavaIOFileSystemSupport.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtend.lib.macro.file.FileLocations> bindFileLocations() {
+		return org.eclipse.xtext.xbase.file.FileLocationsImpl.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends com.google.inject.Provider<org.eclipse.xtext.xbase.file.WorkspaceConfig>> provideWorkspaceConfig() {
+		return org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer> bindITypeComputer() {
+		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
+		return org.eclipse.xtext.xbase.annotations.validation.UnresolvedAnnotationTypeAwareMessageProducer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.resource.ILocationInFileProvider> bindILocationInFileProvider() {
+		return org.eclipse.xtext.xbase.jvmmodel.JvmLocationInFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.validation.FeatureNameValidator> bindFeatureNameValidator() {
+		return org.eclipse.xtext.xbase.validation.LogicalContainerAwareFeatureNameValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
+		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareBatchTypeResolver.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
+		return org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.validation.IResourceValidator> bindIResourceValidator() {
+		return org.eclipse.xtext.xbase.annotations.validation.DerivedStateAwareResourceValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.xbase.XbaseGeneratorFragment
+	public Class<? extends org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer> bindIJvmModelInferrer() {
+		return org.eclipse.osbp.xtext.cubedsl.jvmmodel.CubeDSLJvmModelInferrer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetupGenerated.java
new file mode 100644
index 0000000..ffeac30
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetupGenerated.java
@@ -0,0 +1,53 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.emf.ecore.resource.Resource;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class CubeDSLStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.xtext.xbase.annotations.XbaseWithAnnotationsStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.eclipse.osbp.xtext.cubedsl.CubeDSLRuntimeModule());
+	}
+	
+	public void register(Injector injector) {
+
+		org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+		org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("cube", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("cube", serviceProvider);
+		
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLAntlrTokenFileProvider.java
new file mode 100644
index 0000000..7f3f7ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLAntlrTokenFileProvider.java
@@ -0,0 +1,26 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class CubeDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLParser.java
new file mode 100644
index 0000000..777eba1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLParser.java
@@ -0,0 +1,50 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+
+public class CubeDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private CubeDSLGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "CubeModel";
+	}
+	
+	public CubeDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g
new file mode 100644
index 0000000..c39846c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g
@@ -0,0 +1,8084 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+grammar InternalCubeDSL;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private CubeDSLGrammarAccess grammarAccess;
+ 	
+    public InternalCubeDSLParser(TokenStream input, CubeDSLGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "CubeModel";	
+   	}
+   	
+   	@Override
+   	protected CubeDSLGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleCubeModel
+entryRuleCubeModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeModelRule()); }
+	 iv_ruleCubeModel=ruleCubeModel 
+	 { $current=$iv_ruleCubeModel.current; } 
+	 EOF 
+;
+
+// Rule CubeModel
+ruleCubeModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCubeModelAccess().getCubeModelAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_1_0()); 
+	    }
+		lv_pckg_1_0=ruleCubePackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeModelRule());
+	        }
+       		set(
+       			$current, 
+       			"pckg",
+        		lv_pckg_1_0, 
+        		"CubePackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleCubePackage
+entryRuleCubePackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubePackageRule()); }
+	 iv_ruleCubePackage=ruleCubePackage 
+	 { $current=$iv_ruleCubePackage.current; } 
+	 EOF 
+;
+
+// Rule CubePackage
+ruleCubePackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='package' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubePackageAccess().getPackageKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubePackageAccess().getImportsImportParserRuleCall_2_1_0()); 
+	    }
+		lv_imports_3_0=ruleImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_3_0, 
+        		"Import");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_2_0()); 
+	    }
+		lv_dimensions_4_0=ruleCubeDimension		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
+	        }
+       		add(
+       			$current, 
+       			"dimensions",
+        		lv_dimensions_4_0, 
+        		"CubeDimension");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_3_0()); 
+	    }
+		lv_cubes_5_0=ruleCubeType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
+	        }
+       		add(
+       			$current, 
+       			"cubes",
+        		lv_cubes_5_0, 
+        		"CubeType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeType
+entryRuleCubeType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeTypeRule()); }
+	 iv_ruleCubeType=ruleCubeType 
+	 { $current=$iv_ruleCubeType.current; } 
+	 EOF 
+;
+
+// Rule CubeType
+ruleCubeType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='cube' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubeTypeAccess().getCubeKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeTypeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)((
+(
+		lv_defaultMeasure_2_0=	'defaultMeasure' 
+    {
+        newLeafNode(lv_defaultMeasure_2_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeTypeRule());
+	        }
+       		setWithLastConsumed($current, "defaultMeasure", true, "defaultMeasure");
+	    }
+
+)
+)(
+(
+		lv_defaultMeasureValue_3_0=RULE_STRING
+		{
+			newLeafNode(lv_defaultMeasureValue_3_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeTypeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"defaultMeasureValue",
+        		lv_defaultMeasureValue_3_0, 
+        		"STRING");
+	    }
+
+)
+))?	otherlv_4='{' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); 
+	    }
+		lv_cubeTypeEntity_5_0=ruleCubeTypeEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"cubeTypeEntity",
+        		lv_cubeTypeEntity_5_0, 
+        		"CubeTypeEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeDimensionUsage
+entryRuleCubeDimensionUsage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeDimensionUsageRule()); }
+	 iv_ruleCubeDimensionUsage=ruleCubeDimensionUsage 
+	 { $current=$iv_ruleCubeDimensionUsage.current; } 
+	 EOF 
+;
+
+// Rule CubeDimensionUsage
+ruleCubeDimensionUsage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='dimensionUsage' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+	        }
+        }
+	otherlv_1=RULE_ID
+	{
+		newLeafNode(otherlv_1, grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); 
+	}
+
+)
+)	otherlv_2='over' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getCubeDimensionUsageAccess().getSemicolonKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeDimension
+entryRuleCubeDimension returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeDimensionRule()); }
+	 iv_ruleCubeDimension=ruleCubeDimension 
+	 { $current=$iv_ruleCubeDimension.current; } 
+	 EOF 
+;
+
+// Rule CubeDimension
+ruleCubeDimension returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='dimension' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_typeTime_2_0=	'typeTime' 
+    {
+        newLeafNode(lv_typeTime_2_0, grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeDimensionRule());
+	        }
+       		setWithLastConsumed($current, "typeTime", true, "typeTime");
+	    }
+
+)
+)?	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); 
+	    }
+		lv_hierarchies_4_0=ruleCubeHierarchy		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+	        }
+       		add(
+       			$current, 
+       			"hierarchies",
+        		lv_hierarchies_4_0, 
+        		"CubeHierarchy");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeHierarchy
+entryRuleCubeHierarchy returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeHierarchyRule()); }
+	 iv_ruleCubeHierarchy=ruleCubeHierarchy 
+	 { $current=$iv_ruleCubeHierarchy.current; } 
+	 EOF 
+;
+
+// Rule CubeHierarchy
+ruleCubeHierarchy returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0(),
+            $current);
+    }
+)	otherlv_1='hierarchy' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		lv_hasAll_3_0=	'hasAll' 
+    {
+        newLeafNode(lv_hasAll_3_0, grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "hasAll", true, "hasAll");
+	    }
+
+)
+)?((
+(
+		lv_allMemberName_4_0=	'allMemberName=' 
+    {
+        newLeafNode(lv_allMemberName_4_0, grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "allMemberName", true, "allMemberName=");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); 
+	    }
+		lv_allMemberNameValue_5_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+	        }
+       		set(
+       			$current, 
+       			"allMemberNameValue",
+        		lv_allMemberNameValue_5_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?((
+(
+		lv_defaultMember_6_0=	'defaultMember=' 
+    {
+        newLeafNode(lv_defaultMember_6_0, grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeHierarchyRule());
+	        }
+       		setWithLastConsumed($current, "defaultMember", true, "defaultMember=");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); 
+	    }
+		lv_defaultMemberValue_7_0=ruleTRANSLATABLESTRING		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+	        }
+       		set(
+       			$current, 
+       			"defaultMemberValue",
+        		lv_defaultMemberValue_7_0, 
+        		"TRANSLATABLESTRING");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); 
+	    }
+		lv_cubeDimEntity_9_0=ruleCubeDimensionEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+	        }
+       		set(
+       			$current, 
+       			"cubeDimEntity",
+        		lv_cubeDimEntity_9_0, 
+        		"CubeDimensionEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeEntity
+entryRuleCubeEntity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeEntityRule()); }
+	 iv_ruleCubeEntity=ruleCubeEntity 
+	 { $current=$iv_ruleCubeEntity.current; } 
+	 EOF 
+;
+
+// Rule CubeEntity
+ruleCubeEntity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='entity' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubeEntityAccess().getEntityKeyword_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeEntityRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_key_2_0=	'key=' 
+    {
+        newLeafNode(lv_key_2_0, grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeEntityRule());
+	        }
+       		setWithLastConsumed($current, "key", true, "key=");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeEntityRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeTypeEntity
+entryRuleCubeTypeEntity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeTypeEntityRule()); }
+	 iv_ruleCubeTypeEntity=ruleCubeTypeEntity 
+	 { $current=$iv_ruleCubeTypeEntity.current; } 
+	 EOF 
+;
+
+// Rule CubeTypeEntity
+ruleCubeTypeEntity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); 
+	    }
+		lv_entityRef_0_0=ruleCubeEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+	        }
+       		set(
+       			$current, 
+       			"entityRef",
+        		lv_entityRef_0_0, 
+        		"CubeEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); 
+	    }
+		lv_dimensionUsages_2_0=ruleCubeDimensionUsage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"dimensionUsages",
+        		lv_dimensionUsages_2_0, 
+        		"CubeDimensionUsage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); 
+	    }
+		lv_measures_3_0=ruleCubeMeasure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"measures",
+        		lv_measures_3_0, 
+        		"CubeMeasure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeDimensionEntity
+entryRuleCubeDimensionEntity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeDimensionEntityRule()); }
+	 iv_ruleCubeDimensionEntity=ruleCubeDimensionEntity 
+	 { $current=$iv_ruleCubeDimensionEntity.current; } 
+	 EOF 
+;
+
+// Rule CubeDimensionEntity
+ruleCubeDimensionEntity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+	    }
+		lv_entityRef_1_0=ruleCubeEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+	        }
+       		set(
+       			$current, 
+       			"entityRef",
+        		lv_entityRef_1_0, 
+        		"CubeEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); 
+	    }
+		lv_hierarchLevels_3_0=ruleCubeLevel		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"hierarchLevels",
+        		lv_hierarchLevels_3_0, 
+        		"CubeLevel");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); 
+	    }
+		lv_dimEntity_4_0=ruleCubeDimensionEntityEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+	        }
+       		set(
+       			$current, 
+       			"dimEntity",
+        		lv_dimEntity_4_0, 
+        		"CubeDimensionEntityEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeDimensionEntityEntity
+entryRuleCubeDimensionEntityEntity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeDimensionEntityEntityRule()); }
+	 iv_ruleCubeDimensionEntityEntity=ruleCubeDimensionEntityEntity 
+	 { $current=$iv_ruleCubeDimensionEntityEntity.current; } 
+	 EOF 
+;
+
+// Rule CubeDimensionEntityEntity
+ruleCubeDimensionEntityEntity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+	    }
+		lv_entityRef_1_0=ruleCubeEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+	        }
+       		set(
+       			$current, 
+       			"entityRef",
+        		lv_entityRef_1_0, 
+        		"CubeEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2());
+    }
+	otherlv_3='over' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeDimensionEntityEntityRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5=';' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityEntityAccess().getSemicolonKeyword_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_6_0()); 
+	    }
+		lv_hierarchLevels_6_0=ruleCubeLevel		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+	        }
+       		add(
+       			$current, 
+       			"hierarchLevels",
+        		lv_hierarchLevels_6_0, 
+        		"CubeLevel");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_7_0()); 
+	    }
+		lv_dimEntity_7_0=ruleCubeDimensionEntityEntity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+	        }
+       		set(
+       			$current, 
+       			"dimEntity",
+        		lv_dimEntity_7_0, 
+        		"CubeDimensionEntityEntity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_8='}' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_8());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeLevel
+entryRuleCubeLevel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeLevelRule()); }
+	 iv_ruleCubeLevel=ruleCubeLevel 
+	 { $current=$iv_ruleCubeLevel.current; } 
+	 EOF 
+;
+
+// Rule CubeLevel
+ruleCubeLevel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='level' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubeLevelAccess().getLevelKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='column=' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCubeLevelAccess().getColumnKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeLevelRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_uniqueMembers_4_0=	'uniqueMembers' 
+    {
+        newLeafNode(lv_uniqueMembers_4_0, grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeLevelRule());
+	        }
+       		setWithLastConsumed($current, "uniqueMembers", true, "uniqueMembers");
+	    }
+
+)
+)?((
+(
+		lv_levelType_5_0=	'levelType=' 
+    {
+        newLeafNode(lv_levelType_5_0, grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeLevelRule());
+	        }
+       		setWithLastConsumed($current, "levelType", true, "levelType=");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); 
+	    }
+		lv_levelTypeValue_6_0=ruleCubeLevelLevelType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+	        }
+       		set(
+       			$current, 
+       			"levelTypeValue",
+        		lv_levelTypeValue_6_0, 
+        		"CubeLevelLevelType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0());
+    }
+
+    |(	otherlv_8='{' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_1_0()); 
+	    }
+		lv_properties_9_0=ruleCubeLevelProp		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_9_0, 
+        		"CubeLevelProp");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_10='}' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2());
+    }
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleCubeLevelProp
+entryRuleCubeLevelProp returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeLevelPropRule()); }
+	 iv_ruleCubeLevelProp=ruleCubeLevelProp 
+	 { $current=$iv_ruleCubeLevelProp.current; } 
+	 EOF 
+;
+
+// Rule CubeLevelProp
+ruleCubeLevelProp returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='property' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2='column=' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeLevelPropRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_type_4_0=	'type=' 
+    {
+        newLeafNode(lv_type_4_0, grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeLevelPropRule());
+	        }
+       		setWithLastConsumed($current, "type", true, "type=");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); 
+	    }
+		lv_typeValue_5_0=ruleCubeLevelPropType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+	        }
+       		set(
+       			$current, 
+       			"typeValue",
+        		lv_typeValue_5_0, 
+        		"CubeLevelPropType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_6=';' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCubeLevelPropAccess().getSemicolonKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeMeasure
+entryRuleCubeMeasure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeMeasureRule()); }
+	 iv_ruleCubeMeasure=ruleCubeMeasure 
+	 { $current=$iv_ruleCubeMeasure.current; } 
+	 EOF 
+;
+
+// Rule CubeMeasure
+ruleCubeMeasure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='measure' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); 
+	    }
+		lv_aggregator_2_0=ruleCubeAggregatorEnum		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+	        }
+       		set(
+       			$current, 
+       			"aggregator",
+        		lv_aggregator_2_0, 
+        		"CubeAggregatorEnum");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='column=' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getCubeMeasureAccess().getColumnKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeMeasureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_notVisible_5_0=	'notVisible' 
+    {
+        newLeafNode(lv_notVisible_5_0, grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getCubeMeasureRule());
+	        }
+       		setWithLastConsumed($current, "notVisible", true, "notVisible");
+	    }
+
+)
+)?	otherlv_6=';' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getCubeMeasureAccess().getSemicolonKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportRule()); }
+	 iv_ruleImport=ruleImport 
+	 { $current=$iv_ruleImport.current; } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleCubeQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"CubeQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleCubeQualifiedNameWithWildCard
+entryRuleCubeQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardRule()); } 
+	 iv_ruleCubeQualifiedNameWithWildCard=ruleCubeQualifiedNameWithWildCard 
+	 { $current=$iv_ruleCubeQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule CubeQualifiedNameWithWildCard
+ruleCubeQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleQualifiedName
+entryRuleQualifiedName returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getQualifiedNameRule()); } 
+	 iv_ruleQualifiedName=ruleQualifiedName 
+	 { $current=$iv_ruleQualifiedName.current.getText(); }  
+	 EOF 
+;
+
+// Rule QualifiedName
+ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
+    }
+    this_ValidID_0=ruleValidID    {
+		$current.merge(this_ValidID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(((
+	'.' 
+)=>
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
+    }
+    this_ValidID_2=ruleValidID    {
+		$current.merge(this_ValidID_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)*)
+    ;
+
+
+
+
+
+// Entry rule entryRuleValidID
+entryRuleValidID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidIDRule()); } 
+	 iv_ruleValidID=ruleValidID 
+	 { $current=$iv_ruleValidID.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidID
+ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLFQNRule()); } 
+	 iv_ruleLFQN=ruleLFQN 
+	 { $current=$iv_ruleLFQN.current.getText(); }  
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
+    }
+    this_ID_2=RULE_ID    {
+		$current.merge(this_ID_2);
+    }
+
+    { 
+    newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
+    }
+)*)
+    ;
+
+
+
+
+
+// Entry rule entryRuleTRANSLATABLEID
+entryRuleTRANSLATABLEID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); } 
+	 iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID 
+	 { $current=$iv_ruleTRANSLATABLEID.current.getText(); }  
+	 EOF 
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleTRANSLATABLESTRING
+entryRuleTRANSLATABLESTRING returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); } 
+	 iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING 
+	 { $current=$iv_ruleTRANSLATABLESTRING.current.getText(); }  
+	 EOF 
+;
+
+// Rule TRANSLATABLESTRING
+ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_STRING_0=RULE_STRING    {
+		$current.merge(this_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAnnotation
+entryRuleXAnnotation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationRule()); }
+	 iv_ruleXAnnotation=ruleXAnnotation 
+	 { $current=$iv_ruleXAnnotation.current; } 
+	 EOF 
+;
+
+// Rule XAnnotation
+ruleXAnnotation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+            $current);
+    }
+)	otherlv_1='@' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAnnotationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'(' 
+)=>	otherlv_3='(' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+    }
+)((((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+	    }
+		lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		add(
+       			$current, 
+       			"elementValuePairs",
+        		lv_elementValuePairs_4_0, 
+        		"XAnnotationElementValuePair");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+    }
+((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+	    }
+		lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		add(
+       			$current, 
+       			"elementValuePairs",
+        		lv_elementValuePairs_6_0, 
+        		"XAnnotationElementValuePair");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+	    }
+		lv_value_7_0=ruleXAnnotationElementValueOrCommaList		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"XAnnotationElementValueOrCommaList");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_8=')' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValuePair
+entryRuleXAnnotationElementValuePair returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); }
+	 iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair 
+	 { $current=$iv_ruleXAnnotationElementValuePair.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+	    }
+		ruleValidID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+	    }
+		lv_value_2_0=ruleXAnnotationElementValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_2_0, 
+        		"XAnnotationElementValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	 iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList 
+	 { $current=$iv_ruleXAnnotationElementValueOrCommaList.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((((
+)	'#' 
+	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+    }
+))((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+	    }
+		lv_elements_3_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+    }
+)
+    |(
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
+    }
+    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+    { 
+        $current = $this_XAnnotationOrExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+((
+    {
+        $current = forceCreateModelElementAndAdd(
+            grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+            $current);
+    }
+)(	otherlv_9=',' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_elements_10_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_10_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))+)?))
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationElementValue
+entryRuleXAnnotationElementValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); }
+	 iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue 
+	 { $current=$iv_ruleXAnnotationElementValue.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((((
+)	'#' 
+	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+    }
+))((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+	    }
+		lv_elements_3_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXAnnotationOrExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XAnnotationOrExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+    }
+    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression
+    { 
+        $current = $this_XAnnotationOrExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXAnnotationOrExpression
+entryRuleXAnnotationOrExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); }
+	 iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression 
+	 { $current=$iv_ruleXAnnotationOrExpression.current; } 
+	 EOF 
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+    }
+    this_XAnnotation_0=ruleXAnnotation
+    { 
+        $current = $this_XAnnotation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+    }
+    this_XExpression_1=ruleXExpression
+    { 
+        $current = $this_XExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionRule()); }
+	 iv_ruleXExpression=ruleXExpression 
+	 { $current=$iv_ruleXExpression.current; } 
+	 EOF 
+;
+
+// Rule XExpression
+ruleXExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+    }
+    this_XAssignment_0=ruleXAssignment
+    { 
+        $current = $this_XAssignment_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAssignmentRule()); }
+	 iv_ruleXAssignment=ruleXAssignment 
+	 { $current=$iv_ruleXAssignment.current; } 
+	 EOF 
+;
+
+// Rule XAssignment
+ruleXAssignment returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAssignmentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+	    }
+		ruleFeatureCallID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    { 
+        newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
+    }
+ruleOpSingleAssign
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+	    }
+		lv_value_3_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+    { 
+        newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
+    }
+    this_XOrExpression_4=ruleXOrExpression
+    { 
+        $current = $this_XOrExpression_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpMultiAssign
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAssignmentRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+	    }
+		ruleOpMultiAssign		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+	    }
+		lv_rightOperand_7_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_7_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+;
+
+
+
+
+
+// Entry rule entryRuleOpSingleAssign
+entryRuleOpSingleAssign returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpSingleAssignRule()); } 
+	 iv_ruleOpSingleAssign=ruleOpSingleAssign 
+	 { $current=$iv_ruleOpSingleAssign.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleOpMultiAssign
+entryRuleOpMultiAssign returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpMultiAssignRule()); } 
+	 iv_ruleOpMultiAssign=ruleOpMultiAssign 
+	 { $current=$iv_ruleOpMultiAssign.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='+=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+    }
+
+    |
+	kw='-=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+    }
+
+    |
+	kw='*=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+    }
+
+    |
+	kw='/=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+    }
+
+    |
+	kw='%=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+    }
+
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+    }
+
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+    }
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
+    }
+)
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+    }
+(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+    }
+)?
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+    }
+))
+    ;
+
+
+
+
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXOrExpressionRule()); }
+	 iv_ruleXOrExpression=ruleXOrExpression 
+	 { $current=$iv_ruleXOrExpression.current; } 
+	 EOF 
+;
+
+// Rule XOrExpression
+ruleXOrExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
+    }
+    this_XAndExpression_0=ruleXAndExpression
+    { 
+        $current = $this_XAndExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpOr
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXOrExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpOr		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXAndExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XAndExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpOr
+entryRuleOpOr returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpOrRule()); } 
+	 iv_ruleOpOr=ruleOpOr 
+	 { $current=$iv_ruleOpOr.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpOr
+ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='||' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAndExpression
+entryRuleXAndExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAndExpressionRule()); }
+	 iv_ruleXAndExpression=ruleXAndExpression 
+	 { $current=$iv_ruleXAndExpression.current; } 
+	 EOF 
+;
+
+// Rule XAndExpression
+ruleXAndExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
+    }
+    this_XEqualityExpression_0=ruleXEqualityExpression
+    { 
+        $current = $this_XEqualityExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpAnd
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAndExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpAnd		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXEqualityExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XEqualityExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpAnd
+entryRuleOpAnd returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpAndRule()); } 
+	 iv_ruleOpAnd=ruleOpAnd 
+	 { $current=$iv_ruleOpAnd.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpAnd
+ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+	kw='&&' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleXEqualityExpression
+entryRuleXEqualityExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXEqualityExpressionRule()); }
+	 iv_ruleXEqualityExpression=ruleXEqualityExpression 
+	 { $current=$iv_ruleXEqualityExpression.current; } 
+	 EOF 
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
+    }
+    this_XRelationalExpression_0=ruleXRelationalExpression
+    { 
+        $current = $this_XRelationalExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpEquality
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpEquality		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXRelationalExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XRelationalExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpEquality
+entryRuleOpEquality returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpEqualityRule()); } 
+	 iv_ruleOpEquality=ruleOpEquality 
+	 { $current=$iv_ruleOpEquality.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpEquality
+ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='==' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+    }
+
+    |
+	kw='!=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+    }
+
+    |
+	kw='===' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+    }
+
+    |
+	kw='!==' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXRelationalExpressionRule()); }
+	 iv_ruleXRelationalExpression=ruleXRelationalExpression 
+	 { $current=$iv_ruleXRelationalExpression.current; } 
+	 EOF 
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
+    }
+    this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression
+    { 
+        $current = $this_XOtherOperatorExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((((
+)	'instanceof' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            $current);
+    }
+)	otherlv_2='instanceof' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(((((
+)(
+(
+		ruleOpCompare
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+	    }
+		ruleOpCompare		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+	    }
+		lv_rightOperand_6_0=ruleXOtherOperatorExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_6_0, 
+        		"XOtherOperatorExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpCompare
+entryRuleOpCompare returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpCompareRule()); } 
+	 iv_ruleOpCompare=ruleOpCompare 
+	 { $current=$iv_ruleOpCompare.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpCompare
+ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='>=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+    }
+
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+    }
+
+	kw='=' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
+    }
+)
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+    }
+
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); }
+	 iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression 
+	 { $current=$iv_ruleXOtherOperatorExpression.current; } 
+	 EOF 
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
+    }
+    this_XAdditiveExpression_0=ruleXAdditiveExpression
+    { 
+        $current = $this_XAdditiveExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpOther
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpOther		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXAdditiveExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XAdditiveExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpOther
+entryRuleOpOther returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpOtherRule()); } 
+	 iv_ruleOpOther=ruleOpOther 
+	 { $current=$iv_ruleOpOther.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpOther
+ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='->' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+    }
+
+    |
+	kw='..<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+    }
+
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+    }
+
+	kw='..' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+    }
+)
+    |
+	kw='..' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+    }
+
+    |
+	kw='=>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+    }
+
+    |(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+    }
+((((
+	'>' 
+
+	'>' 
+))=>(
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+    }
+
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+    }
+))
+    |
+	kw='>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+    }
+))
+    |(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+    }
+((((
+	'<' 
+
+	'<' 
+))=>(
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+    }
+
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+    }
+))
+    |
+	kw='<' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+    }
+
+    |
+	kw='=>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+    }
+))
+    |
+	kw='<>' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+    }
+
+    |
+	kw='?:' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); }
+	 iv_ruleXAdditiveExpression=ruleXAdditiveExpression 
+	 { $current=$iv_ruleXAdditiveExpression.current; } 
+	 EOF 
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
+    }
+    this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression
+    { 
+        $current = $this_XMultiplicativeExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpAdd
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpAdd		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXMultiplicativeExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XMultiplicativeExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpAdd
+entryRuleOpAdd returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpAddRule()); } 
+	 iv_ruleOpAdd=ruleOpAdd 
+	 { $current=$iv_ruleOpAdd.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpAdd
+ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); }
+	 iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression 
+	 { $current=$iv_ruleXMultiplicativeExpression.current; } 
+	 EOF 
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
+    }
+    this_XUnaryOperation_0=ruleXUnaryOperation
+    { 
+        $current = $this_XUnaryOperation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)(
+(
+		ruleOpMulti
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+	    }
+		ruleOpMulti		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
+	    }
+		lv_rightOperand_3_0=ruleXUnaryOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"rightOperand",
+        		lv_rightOperand_3_0, 
+        		"XUnaryOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleOpMulti
+entryRuleOpMulti returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpMultiRule()); } 
+	 iv_ruleOpMulti=ruleOpMulti 
+	 { $current=$iv_ruleOpMulti.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpMulti
+ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+    }
+
+    |
+	kw='**' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+    }
+
+    |
+	kw='/' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+    }
+
+    |
+	kw='%' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXUnaryOperationRule()); }
+	 iv_ruleXUnaryOperation=ruleXUnaryOperation 
+	 { $current=$iv_ruleXUnaryOperation.current; } 
+	 EOF 
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXUnaryOperationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+	    }
+		ruleOpUnary		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
+	    }
+		lv_operand_2_0=ruleXUnaryOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"operand",
+        		lv_operand_2_0, 
+        		"XUnaryOperation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |
+    { 
+        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
+    }
+    this_XCastedExpression_3=ruleXCastedExpression
+    { 
+        $current = $this_XCastedExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleOpUnary
+entryRuleOpUnary returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpUnaryRule()); } 
+	 iv_ruleOpUnary=ruleOpUnary 
+	 { $current=$iv_ruleOpUnary.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpUnary
+ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='!' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+    }
+
+    |
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCastedExpressionRule()); }
+	 iv_ruleXCastedExpression=ruleXCastedExpression 
+	 { $current=$iv_ruleXCastedExpression.current; } 
+	 EOF 
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
+    }
+    this_XPostfixOperation_0=ruleXPostfixOperation
+    { 
+        $current = $this_XPostfixOperation_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+(((((
+)	'as' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            $current);
+    }
+)	otherlv_2='as' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)
+;
+
+
+
+
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXPostfixOperationRule()); }
+	 iv_ruleXPostfixOperation=ruleXPostfixOperation 
+	 { $current=$iv_ruleXPostfixOperation.current; } 
+	 EOF 
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
+    }
+    this_XMemberFeatureCall_0=ruleXMemberFeatureCall
+    { 
+        $current = $this_XMemberFeatureCall_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+)(
+(
+		ruleOpPostfix
+)
+)))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+            $current);
+    }
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXPostfixOperationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+	    }
+		ruleOpPostfix		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))?)
+;
+
+
+
+
+
+// Entry rule entryRuleOpPostfix
+entryRuleOpPostfix returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOpPostfixRule()); } 
+	 iv_ruleOpPostfix=ruleOpPostfix 
+	 { $current=$iv_ruleOpPostfix.current.getText(); }  
+	 EOF 
+;
+
+// Rule OpPostfix
+ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='++' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
+    }
+
+    |
+	kw='--' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); }
+	 iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall 
+	 { $current=$iv_ruleXMemberFeatureCall.current; } 
+	 EOF 
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
+    }
+    this_XPrimaryExpression_0=ruleXPrimaryExpression
+    { 
+        $current = $this_XPrimaryExpression_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+            $current);
+    }
+)(	otherlv_2='.' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+    }
+
+    |(
+(
+		lv_explicitStatic_3_0=	'::' 
+    {
+        newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitStatic", true, "::");
+	    }
+
+)
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+	    }
+		ruleFeatureCallID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    { 
+        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
+    }
+ruleOpSingleAssign
+    { 
+        afterParserOrEnumRuleCall();
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
+	    }
+		lv_value_6_0=ruleXAssignment		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_6_0, 
+        		"XAssignment");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(((((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+            $current);
+    }
+)(	otherlv_8='.' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+    }
+
+    |(
+(
+		lv_nullSafe_9_0=	'?.' 
+    {
+        newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "nullSafe", true, "?.");
+	    }
+
+)
+)
+    |(
+(
+		lv_explicitStatic_10_0=	'::' 
+    {
+        newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitStatic", true, "::");
+	    }
+
+)
+))))(	otherlv_11='<' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
+	    }
+		lv_typeArguments_12_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_12_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_13=',' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
+	    }
+		lv_typeArguments_14_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_14_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_15='>' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+    }
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+	    }
+		ruleIdOrSuper		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+		lv_explicitOperationCall_17_0=	'(' 
+    {
+        newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
+	    }
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
+	    }
+		lv_memberCallArguments_18_0=ruleXShortClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_18_0, 
+        		"XShortClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
+	    }
+		lv_memberCallArguments_19_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_19_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20=',' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
+	    }
+		lv_memberCallArguments_21_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_21_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*))?	otherlv_22=')' 
+    {
+    	newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+    }
+)?((((
+)	'[' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
+	    }
+		lv_memberCallArguments_23_0=ruleXClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"memberCallArguments",
+        		lv_memberCallArguments_23_0, 
+        		"XClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?))*)
+;
+
+
+
+
+
+// Entry rule entryRuleXPrimaryExpression
+entryRuleXPrimaryExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); }
+	 iv_ruleXPrimaryExpression=ruleXPrimaryExpression 
+	 { $current=$iv_ruleXPrimaryExpression.current; } 
+	 EOF 
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
+    }
+    this_XConstructorCall_0=ruleXConstructorCall
+    { 
+        $current = $this_XConstructorCall_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
+    }
+    this_XBlockExpression_1=ruleXBlockExpression
+    { 
+        $current = $this_XBlockExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
+    }
+    this_XSwitchExpression_2=ruleXSwitchExpression
+    { 
+        $current = $this_XSwitchExpression_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'synchronized' 
+	'(' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+    }
+    this_XSynchronizedExpression_3=ruleXSynchronizedExpression
+    { 
+        $current = $this_XSynchronizedExpression_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
+    }
+    this_XFeatureCall_4=ruleXFeatureCall
+    { 
+        $current = $this_XFeatureCall_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
+    }
+    this_XLiteral_5=ruleXLiteral
+    { 
+        $current = $this_XLiteral_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
+    }
+    this_XIfExpression_6=ruleXIfExpression
+    { 
+        $current = $this_XIfExpression_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+    }
+    this_XForLoopExpression_7=ruleXForLoopExpression
+    { 
+        $current = $this_XForLoopExpression_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+    }
+    this_XBasicForLoopExpression_8=ruleXBasicForLoopExpression
+    { 
+        $current = $this_XBasicForLoopExpression_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
+    }
+    this_XWhileExpression_9=ruleXWhileExpression
+    { 
+        $current = $this_XWhileExpression_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
+    }
+    this_XDoWhileExpression_10=ruleXDoWhileExpression
+    { 
+        $current = $this_XDoWhileExpression_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
+    }
+    this_XThrowExpression_11=ruleXThrowExpression
+    { 
+        $current = $this_XThrowExpression_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
+    }
+    this_XReturnExpression_12=ruleXReturnExpression
+    { 
+        $current = $this_XReturnExpression_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
+    }
+    this_XTryCatchFinallyExpression_13=ruleXTryCatchFinallyExpression
+    { 
+        $current = $this_XTryCatchFinallyExpression_13.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
+    }
+    this_XParenthesizedExpression_14=ruleXParenthesizedExpression
+    { 
+        $current = $this_XParenthesizedExpression_14.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXLiteralRule()); }
+	 iv_ruleXLiteral=ruleXLiteral 
+	 { $current=$iv_ruleXLiteral.current; } 
+	 EOF 
+;
+
+// Rule XLiteral
+ruleXLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
+    }
+    this_XCollectionLiteral_0=ruleXCollectionLiteral
+    { 
+        $current = $this_XCollectionLiteral_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |((((
+)	'[' 
+))=>
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+    }
+    this_XClosure_1=ruleXClosure
+    { 
+        $current = $this_XClosure_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
+    }
+    this_XBooleanLiteral_2=ruleXBooleanLiteral
+    { 
+        $current = $this_XBooleanLiteral_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
+    }
+    this_XNumberLiteral_3=ruleXNumberLiteral
+    { 
+        $current = $this_XNumberLiteral_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
+    }
+    this_XNullLiteral_4=ruleXNullLiteral
+    { 
+        $current = $this_XNullLiteral_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
+    }
+    this_XStringLiteral_5=ruleXStringLiteral
+    { 
+        $current = $this_XStringLiteral_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
+    }
+    this_XTypeLiteral_6=ruleXTypeLiteral
+    { 
+        $current = $this_XTypeLiteral_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCollectionLiteralRule()); }
+	 iv_ruleXCollectionLiteral=ruleXCollectionLiteral 
+	 { $current=$iv_ruleXCollectionLiteral.current; } 
+	 EOF 
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
+    }
+    this_XSetLiteral_0=ruleXSetLiteral
+    { 
+        $current = $this_XSetLiteral_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
+    }
+    this_XListLiteral_1=ruleXListLiteral
+    { 
+        $current = $this_XListLiteral_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSetLiteralRule()); }
+	 iv_ruleXSetLiteral=ruleXSetLiteral 
+	 { $current=$iv_ruleXSetLiteral.current; } 
+	 EOF 
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+	    }
+		lv_elements_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSetLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXListLiteral
+entryRuleXListLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXListLiteralRule()); }
+	 iv_ruleXListLiteral=ruleXListLiteral 
+	 { $current=$iv_ruleXListLiteral.current; } 
+	 EOF 
+;
+
+// Rule XListLiteral
+ruleXListLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='#' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+    }
+	otherlv_2='[' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
+	    }
+		lv_elements_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_elements_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXListLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"elements",
+        		lv_elements_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=']' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXClosure
+entryRuleXClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXClosureRule()); }
+	 iv_ruleXClosure=ruleXClosure 
+	 { $current=$iv_ruleXClosure.current; } 
+	 EOF 
+;
+
+// Rule XClosure
+ruleXClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'[' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='[' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+    }
+))(((((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
+	    }
+		lv_declaredFormalParameters_2_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_2_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
+	    }
+		lv_declaredFormalParameters_4_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_4_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(
+(
+		lv_explicitSyntax_5_0=	'|' 
+    {
+        newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXClosureRule());
+	        }
+       		setWithLastConsumed($current, "explicitSyntax", true, "|");
+	    }
+
+)
+)))?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
+	    }
+		lv_expression_6_0=ruleXExpressionInClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXClosureRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_6_0, 
+        		"XExpressionInClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7=']' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpressionInClosure
+entryRuleXExpressionInClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionInClosureRule()); }
+	 iv_ruleXExpressionInClosure=ruleXExpressionInClosure 
+	 { $current=$iv_ruleXExpressionInClosure.current; } 
+	 EOF 
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+            $current);
+    }
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
+	    }
+		lv_expressions_1_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXExpressionInClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"expressions",
+        		lv_expressions_1_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+    }
+)?)*)
+;
+
+
+
+
+
+// Entry rule entryRuleXShortClosure
+entryRuleXShortClosure returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXShortClosureRule()); }
+	 iv_ruleXShortClosure=ruleXShortClosure 
+	 { $current=$iv_ruleXShortClosure.current; } 
+	 EOF 
+;
+
+// Rule XShortClosure
+ruleXShortClosure returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+            $current);
+    }
+)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
+	    }
+		lv_declaredFormalParameters_1_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_1_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
+	    }
+		lv_declaredFormalParameters_3_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		add(
+       			$current, 
+       			"declaredFormalParameters",
+        		lv_declaredFormalParameters_3_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?(
+(
+		lv_explicitSyntax_4_0=	'|' 
+    {
+        newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXShortClosureRule());
+	        }
+       		setWithLastConsumed($current, "explicitSyntax", true, "|");
+	    }
+
+)
+)))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_expression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXShortClosureRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXParenthesizedExpression
+entryRuleXParenthesizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); }
+	 iv_ruleXParenthesizedExpression=ruleXParenthesizedExpression 
+	 { $current=$iv_ruleXParenthesizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
+    }
+    this_XExpression_1=ruleXExpression
+    { 
+        $current = $this_XExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+	otherlv_2=')' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXIfExpression
+entryRuleXIfExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXIfExpressionRule()); }
+	 iv_ruleXIfExpression=ruleXIfExpression 
+	 { $current=$iv_ruleXIfExpression.current; } 
+	 EOF 
+;
+
+// Rule XIfExpression
+ruleXIfExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='if' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_if_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"if",
+        		lv_if_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_then_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"then",
+        		lv_then_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'else' 
+)=>	otherlv_6='else' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
+	    }
+		lv_else_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXIfExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"else",
+        		lv_else_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleXSwitchExpression
+entryRuleXSwitchExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSwitchExpressionRule()); }
+	 iv_ruleXSwitchExpression=ruleXSwitchExpression 
+	 { $current=$iv_ruleXSwitchExpression.current; } 
+	 EOF 
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='switch' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+    }
+(((((	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
+	    }
+		lv_declaredParam_3_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_3_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
+	    }
+		lv_switch_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"switch",
+        		lv_switch_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+    }
+)
+    |(((((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
+	    }
+		lv_declaredParam_7_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_7_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_8=':' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+    }
+))?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
+	    }
+		lv_switch_9_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"switch",
+        		lv_switch_9_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
+	    }
+		lv_cases_11_0=ruleXCasePart		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"cases",
+        		lv_cases_11_0, 
+        		"XCasePart");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_12='default' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+    }
+	otherlv_13=':' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
+	    }
+		lv_default_14_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSwitchExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"default",
+        		lv_default_14_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15='}' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXCasePart
+entryRuleXCasePart returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCasePartRule()); }
+	 iv_ruleXCasePart=ruleXCasePart 
+	 { $current=$iv_ruleXCasePart.current; } 
+	 EOF 
+;
+
+// Rule XCasePart
+ruleXCasePart returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeGuard_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
+	        }
+       		set(
+       			$current, 
+       			"typeGuard",
+        		lv_typeGuard_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_2='case' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
+	    }
+		lv_case_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
+	        }
+       		set(
+       			$current, 
+       			"case",
+        		lv_case_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?((	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
+	    }
+		lv_then_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCasePartRule());
+	        }
+       		set(
+       			$current, 
+       			"then",
+        		lv_then_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+(
+		lv_fallThrough_6_0=	',' 
+    {
+        newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXCasePartRule());
+	        }
+       		setWithLastConsumed($current, "fallThrough", true, ",");
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleXForLoopExpression
+entryRuleXForLoopExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXForLoopExpressionRule()); }
+	 iv_ruleXForLoopExpression=ruleXForLoopExpression 
+	 { $current=$iv_ruleXForLoopExpression.current; } 
+	 EOF 
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='for' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
+	    }
+		lv_declaredParam_3_0=ruleJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_3_0, 
+        		"JvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=':' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_forExpression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"forExpression",
+        		lv_forExpression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_eachExpression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"eachExpression",
+        		lv_eachExpression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXBasicForLoopExpression
+entryRuleXBasicForLoopExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); }
+	 iv_ruleXBasicForLoopExpression=ruleXBasicForLoopExpression 
+	 { $current=$iv_ruleXBasicForLoopExpression.current; } 
+	 EOF 
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='for' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
+	    }
+		lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"initExpressions",
+        		lv_initExpressions_3_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=',' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
+	    }
+		lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"initExpressions",
+        		lv_initExpressions_5_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_6=';' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_expression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
+	    }
+		lv_updateExpressions_9_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"updateExpressions",
+        		lv_updateExpressions_9_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
+	    }
+		lv_updateExpressions_11_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"updateExpressions",
+        		lv_updateExpressions_11_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_12=')' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
+	    }
+		lv_eachExpression_13_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBasicForLoopExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"eachExpression",
+        		lv_eachExpression_13_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXWhileExpression
+entryRuleXWhileExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXWhileExpressionRule()); }
+	 iv_ruleXWhileExpression=ruleXWhileExpression 
+	 { $current=$iv_ruleXWhileExpression.current; } 
+	 EOF 
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='while' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_predicate_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"predicate",
+        		lv_predicate_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_body_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXDoWhileExpression
+entryRuleXDoWhileExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); }
+	 iv_ruleXDoWhileExpression=ruleXDoWhileExpression 
+	 { $current=$iv_ruleXDoWhileExpression.current; } 
+	 EOF 
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='do' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_body_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='while' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+    }
+	otherlv_4='(' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
+	    }
+		lv_predicate_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXDoWhileExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"predicate",
+        		lv_predicate_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_6=')' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXBlockExpression
+entryRuleXBlockExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXBlockExpressionRule()); }
+	 iv_ruleXBlockExpression=ruleXBlockExpression 
+	 { $current=$iv_ruleXBlockExpression.current; } 
+	 EOF 
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='{' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
+	    }
+		lv_expressions_2_0=ruleXExpressionOrVarDeclaration		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXBlockExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"expressions",
+        		lv_expressions_2_0, 
+        		"XExpressionOrVarDeclaration");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=';' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+    }
+)?)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXExpressionOrVarDeclaration
+entryRuleXExpressionOrVarDeclaration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); }
+	 iv_ruleXExpressionOrVarDeclaration=ruleXExpressionOrVarDeclaration 
+	 { $current=$iv_ruleXExpressionOrVarDeclaration.current; } 
+	 EOF 
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
+    }
+    this_XVariableDeclaration_0=ruleXVariableDeclaration
+    { 
+        $current = $this_XVariableDeclaration_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
+    }
+    this_XExpression_1=ruleXExpression
+    { 
+        $current = $this_XExpression_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXVariableDeclaration
+entryRuleXVariableDeclaration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXVariableDeclarationRule()); }
+	 iv_ruleXVariableDeclaration=ruleXVariableDeclaration 
+	 { $current=$iv_ruleXVariableDeclaration.current; } 
+	 EOF 
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+            $current);
+    }
+)((
+(
+		lv_writeable_1_0=	'var' 
+    {
+        newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "writeable", true, "var");
+	    }
+
+)
+)
+    |	otherlv_2='val' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+    }
+)(((((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))=>((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
+	    }
+		lv_name_4_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
+	    }
+		lv_name_5_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_5_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))(	otherlv_6='=' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
+	    }
+		lv_right_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXVariableDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"right",
+        		lv_right_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmFormalParameter
+entryRuleJvmFormalParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmFormalParameterRule()); }
+	 iv_ruleJvmFormalParameter=ruleJvmFormalParameter 
+	 { $current=$iv_ruleJvmFormalParameter.current; } 
+	 EOF 
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+	    }
+		lv_parameterType_0_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"parameterType",
+        		lv_parameterType_0_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleFullJvmFormalParameter
+entryRuleFullJvmFormalParameter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); }
+	 iv_ruleFullJvmFormalParameter=ruleFullJvmFormalParameter 
+	 { $current=$iv_ruleFullJvmFormalParameter.current; } 
+	 EOF 
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
+	    }
+		lv_parameterType_0_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"parameterType",
+        		lv_parameterType_0_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getFullJvmFormalParameterRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXFeatureCall
+entryRuleXFeatureCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXFeatureCallRule()); }
+	 iv_ruleXFeatureCall=ruleXFeatureCall 
+	 { $current=$iv_ruleXFeatureCall.current; } 
+	 EOF 
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+            $current);
+    }
+)(	otherlv_1='<' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_typeArguments_2_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_2_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+	    }
+		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+    }
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
+	    }
+		ruleIdOrSuper		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+		lv_explicitOperationCall_7_0=	'(' 
+    {
+        newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXFeatureCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitOperationCall", true, "(");
+	    }
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
+	    }
+		lv_featureCallArguments_8_0=ruleXShortClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_8_0, 
+        		"XShortClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
+	    }
+		lv_featureCallArguments_9_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_9_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=',' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
+	    }
+		lv_featureCallArguments_11_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_11_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*))?	otherlv_12=')' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+    }
+)?((((
+)	'[' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
+	    }
+		lv_featureCallArguments_13_0=ruleXClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFeatureCallRule());
+	        }
+       		add(
+       			$current, 
+       			"featureCallArguments",
+        		lv_featureCallArguments_13_0, 
+        		"XClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleFeatureCallID
+entryRuleFeatureCallID returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getFeatureCallIDRule()); } 
+	 iv_ruleFeatureCallID=ruleFeatureCallID 
+	 { $current=$iv_ruleFeatureCallID.current.getText(); }  
+	 EOF 
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
+    }
+    this_ValidID_0=ruleValidID    {
+		$current.merge(this_ValidID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='extends' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
+    }
+
+    |
+	kw='static' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
+    }
+
+    |
+	kw='import' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
+    }
+
+    |
+	kw='extension' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleIdOrSuper
+entryRuleIdOrSuper returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIdOrSuperRule()); } 
+	 iv_ruleIdOrSuper=ruleIdOrSuper 
+	 { $current=$iv_ruleIdOrSuper.current.getText(); }  
+	 EOF 
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
+    }
+    this_FeatureCallID_0=ruleFeatureCallID    {
+		$current.merge(this_FeatureCallID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	kw='super' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXConstructorCall
+entryRuleXConstructorCall returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXConstructorCallRule()); }
+	 iv_ruleXConstructorCall=ruleXConstructorCall 
+	 { $current=$iv_ruleXConstructorCall.current; } 
+	 EOF 
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+            $current);
+    }
+)	otherlv_1='new' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_3='<' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
+	    }
+		lv_typeArguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_5=',' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
+	    }
+		lv_typeArguments_6_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"typeArguments",
+        		lv_typeArguments_6_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_7='>' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+    }
+)?(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+		lv_explicitConstructorCall_8_0=	'(' 
+    {
+        newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXConstructorCallRule());
+	        }
+       		setWithLastConsumed($current, "explicitConstructorCall", true, "(");
+	    }
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
+	    }
+		lv_arguments_9_0=ruleXShortClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_9_0, 
+        		"XShortClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
+	    }
+		lv_arguments_10_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_10_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11=',' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
+	    }
+		lv_arguments_12_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_12_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*))?	otherlv_13=')' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+    }
+)?((((
+)	'[' 
+))=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
+	    }
+		lv_arguments_14_0=ruleXClosure		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXConstructorCallRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_14_0, 
+        		"XClosure");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXBooleanLiteral
+entryRuleXBooleanLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXBooleanLiteralRule()); }
+	 iv_ruleXBooleanLiteral=ruleXBooleanLiteral 
+	 { $current=$iv_ruleXBooleanLiteral.current; } 
+	 EOF 
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+            $current);
+    }
+)(	otherlv_1='false' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+    }
+
+    |(
+(
+		lv_isTrue_2_0=	'true' 
+    {
+        newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXBooleanLiteralRule());
+	        }
+       		setWithLastConsumed($current, "isTrue", true, "true");
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleXNullLiteral
+entryRuleXNullLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXNullLiteralRule()); }
+	 iv_ruleXNullLiteral=ruleXNullLiteral 
+	 { $current=$iv_ruleXNullLiteral.current; } 
+	 EOF 
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='null' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXNumberLiteral
+entryRuleXNumberLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXNumberLiteralRule()); }
+	 iv_ruleXNumberLiteral=ruleXNumberLiteral 
+	 { $current=$iv_ruleXNumberLiteral.current; } 
+	 EOF 
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
+	    }
+		lv_value_1_0=ruleNumber		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"Number");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXStringLiteral
+entryRuleXStringLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXStringLiteralRule()); }
+	 iv_ruleXStringLiteral=ruleXStringLiteral 
+	 { $current=$iv_ruleXStringLiteral.current; } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+            $current);
+    }
+)(
+(
+		lv_value_1_0=RULE_STRING
+		{
+			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTypeLiteralRule()); }
+	 iv_ruleXTypeLiteral=ruleXTypeLiteral 
+	 { $current=$iv_ruleXTypeLiteral.current; } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='typeof' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXTypeLiteralRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
+	    }
+		lv_arrayDimensions_4_0=ruleArrayBrackets		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"arrayDimensions",
+        		lv_arrayDimensions_4_0, 
+        		"ArrayBrackets");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXThrowExpressionRule()); }
+	 iv_ruleXThrowExpression=ruleXThrowExpression 
+	 { $current=$iv_ruleXThrowExpression.current; } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='throw' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXReturnExpressionRule()); }
+	 iv_ruleXReturnExpression=ruleXReturnExpression 
+	 { $current=$iv_ruleXReturnExpression.current; } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='return' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+    }
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression 
+	 { $current=$iv_ruleXTryCatchFinallyExpression.current; } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='try' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((((	'catch' 
+)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
+	    }
+		lv_catchClauses_3_0=ruleXCatchClause		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"catchClauses",
+        		lv_catchClauses_3_0, 
+        		"XCatchClause");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+(((	'finally' 
+)=>	otherlv_4='finally' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
+	    }
+		lv_finallyExpression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='finally' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_finallyExpression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))))
+;
+
+
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); }
+	 iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression 
+	 { $current=$iv_ruleXSynchronizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='synchronized' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_param_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"param",
+        		lv_param_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_expression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCatchClauseRule()); }
+	 iv_ruleXCatchClause=ruleXCatchClause 
+	 { $current=$iv_ruleXCatchClause.current; } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((	'catch' 
+)=>	otherlv_0='catch' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
+	    }
+		lv_declaredParam_2_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_2_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
+	    }
+		lv_expression_4_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_4_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleNumber
+entryRuleNumber returns [String current=null] 
+	@init { 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+	}
+	:
+	{ newCompositeNode(grammarAccess.getNumberRule()); } 
+	 iv_ruleNumber=ruleNumber 
+	 { $current=$iv_ruleNumber.current.getText(); }  
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+    }
+    @after { leaveRule(); }:
+(    this_HEX_0=RULE_HEX    {
+		$current.merge(this_HEX_0);
+    }
+
+    { 
+    newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
+    }
+
+    |((    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
+    }
+
+    |    this_DECIMAL_2=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_2);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
+    }
+)(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
+    }
+(    this_INT_4=RULE_INT    {
+		$current.merge(this_INT_4);
+    }
+
+    { 
+    newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
+    }
+
+    |    this_DECIMAL_5=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_5);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
+    }
+))?))
+    ;
+finally {
+	myHiddenTokenState.restore();
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); }
+	 iv_ruleJvmTypeReference=ruleJvmTypeReference 
+	 { $current=$iv_ruleJvmTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
+    }
+    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
+    { 
+        $current = $this_JvmParameterizedTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+)	ruleArrayBrackets))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+            $current);
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
+    }
+ruleArrayBrackets
+    { 
+        afterParserOrEnumRuleCall();
+    }
+))*)
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
+    }
+    this_XFunctionTypeRef_3=ruleXFunctionTypeRef
+    { 
+        $current = $this_XFunctionTypeRef_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); } 
+	 iv_ruleArrayBrackets=ruleArrayBrackets 
+	 { $current=$iv_ruleArrayBrackets.current.getText(); }  
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='[' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+    }
+
+	kw=']' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); }
+	 iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef 
+	 { $current=$iv_ruleXFunctionTypeRef.current; } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
+	    }
+		lv_paramTypes_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_paramTypes_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+    }
+)?	otherlv_5='=>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
+	    }
+		lv_returnType_6_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		set(
+       			$current, 
+       			"returnType",
+        		lv_returnType_6_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference 
+	 { $current=$iv_ruleJvmParameterizedTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_1='<' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_arguments_2_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_2_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+	    }
+		lv_arguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+    }
+(((((
+)	'.' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+            $current);
+    }
+)	otherlv_7='.' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+    }
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+	    }
+		ruleValidID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_9='<' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
+	    }
+		lv_arguments_10_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_10_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11=',' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
+	    }
+		lv_arguments_12_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_12_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_13='>' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+    }
+)?)*)?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference 
+	 { $current=$iv_ruleJvmArgumentTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
+    }
+    this_JvmTypeReference_0=ruleJvmTypeReference
+    { 
+        $current = $this_JvmTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
+    }
+    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
+    { 
+        $current = $this_JvmWildcardTypeReference_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference 
+	 { $current=$iv_ruleJvmWildcardTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
+	    }
+		lv_constraints_2_0=ruleJvmUpperBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_2_0, 
+        		"JvmUpperBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
+	    }
+		lv_constraints_3_0=ruleJvmUpperBoundAnded		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_3_0, 
+        		"JvmUpperBoundAnded");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+    |((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
+	    }
+		lv_constraints_4_0=ruleJvmLowerBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_4_0, 
+        		"JvmLowerBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
+	    }
+		lv_constraints_5_0=ruleJvmLowerBoundAnded		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmWildcardTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_5_0, 
+        		"JvmLowerBoundAnded");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*))?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmUpperBound
+entryRuleJvmUpperBound returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmUpperBoundRule()); }
+	 iv_ruleJvmUpperBound=ruleJvmUpperBound 
+	 { $current=$iv_ruleJvmUpperBound.current; } 
+	 EOF 
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='extends' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmUpperBoundAnded
+entryRuleJvmUpperBoundAnded returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); }
+	 iv_ruleJvmUpperBoundAnded=ruleJvmUpperBoundAnded 
+	 { $current=$iv_ruleJvmUpperBoundAnded.current; } 
+	 EOF 
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='&' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmUpperBoundAndedRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmLowerBound
+entryRuleJvmLowerBound returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmLowerBoundRule()); }
+	 iv_ruleJvmLowerBound=ruleJvmLowerBound 
+	 { $current=$iv_ruleJvmLowerBound.current; } 
+	 EOF 
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='super' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmLowerBoundAnded
+entryRuleJvmLowerBoundAnded returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); }
+	 iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded 
+	 { $current=$iv_ruleJvmLowerBoundAnded.current; } 
+	 EOF 
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='&' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
+	    }
+		lv_typeReference_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmLowerBoundAndedRule());
+	        }
+       		set(
+       			$current, 
+       			"typeReference",
+        		lv_typeReference_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleQualifiedNameWithWildcard
+entryRuleQualifiedNameWithWildcard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); } 
+	 iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard 
+	 { $current=$iv_ruleQualifiedNameWithWildcard.current.getText(); }  
+	 EOF 
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+// Entry rule entryRuleXImportDeclaration
+entryRuleXImportDeclaration returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
+	 iv_ruleXImportDeclaration=ruleXImportDeclaration 
+	 { $current=$iv_ruleXImportDeclaration.current; } 
+	 EOF 
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXImportDeclarationAccess().getImportKeyword_0());
+    }
+(((
+(
+		lv_static_1_0=	'static' 
+    {
+        newLeafNode(lv_static_1_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "static", true, "static");
+	    }
+
+)
+)(
+(
+		lv_extension_2_0=	'extension' 
+    {
+        newLeafNode(lv_extension_2_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "extension", true, "extension");
+	    }
+
+)
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_0_2_0()); 
+	    }
+		ruleQualifiedNameInStaticImport		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_wildcard_4_0=	'*' 
+    {
+        newLeafNode(lv_wildcard_4_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_1_0_3_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+       		setWithLastConsumed($current, "wildcard", true, "*");
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_1_0_3_1_0()); 
+	    }
+		lv_memberName_5_0=ruleValidID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"memberName",
+        		lv_memberName_5_0, 
+        		"ValidID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+    |(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXImportDeclarationRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_1_1_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_2_0()); 
+	    }
+		lv_importedNamespace_7_0=ruleQualifiedNameWithWildcard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXImportDeclarationRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_7_0, 
+        		"QualifiedNameWithWildcard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))(	otherlv_8=';' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleQualifiedNameInStaticImport
+entryRuleQualifiedNameInStaticImport returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); } 
+	 iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport 
+	 { $current=$iv_ruleQualifiedNameInStaticImport.current.getText(); }  
+	 EOF 
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
+    }
+    this_ValidID_0=ruleValidID    {
+		$current.merge(this_ValidID_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
+    }
+)+
+    ;
+
+
+
+
+
+// Rule CubeAggregatorEnum
+ruleCubeAggregatorEnum returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='sum' 
+	{
+        $current = grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='count' 
+	{
+        $current = grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='min' 
+	{
+        $current = grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='max' 
+	{
+        $current = grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='avg' 
+	{
+        $current = grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); 
+    }
+)
+    |(	enumLiteral_5='distinct-count' 
+	{
+        $current = grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_5, grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); 
+    }
+));
+
+
+
+// Rule CubeLevelPropType
+ruleCubeLevelPropType returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='String' 
+	{
+        $current = grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='Numeric' 
+	{
+        $current = grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='Integer' 
+	{
+        $current = grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='Boolean' 
+	{
+        $current = grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='Date' 
+	{
+        $current = grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); 
+    }
+)
+    |(	enumLiteral_5='Time' 
+	{
+        $current = grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); 
+    }
+)
+    |(	enumLiteral_6='Timestamp' 
+	{
+        $current = grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); 
+    }
+));
+
+
+
+// Rule CubeLevelLevelType
+ruleCubeLevelLevelType returns [Enumerator current=null] 
+    @init { enterRule(); }
+    @after { leaveRule(); }:
+((	enumLiteral_0='Time' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); 
+    }
+)
+    |(	enumLiteral_1='TimeYears' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); 
+    }
+)
+    |(	enumLiteral_2='TimeHalfYears' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); 
+    }
+)
+    |(	enumLiteral_3='TimeQuarters' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); 
+    }
+)
+    |(	enumLiteral_4='TimeMonths' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); 
+    }
+)
+    |(	enumLiteral_5='TimeWeeks' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); 
+    }
+)
+    |(	enumLiteral_6='TimeDays' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); 
+    }
+)
+    |(	enumLiteral_7='TimeHours' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_7, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); 
+    }
+)
+    |(	enumLiteral_8='TimeMinutes' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_8, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); 
+    }
+)
+    |(	enumLiteral_9='TimeSeconds' 
+	{
+        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+        newLeafNode(enumLiteral_9, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); 
+    }
+));
+
+
+
+RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
+
+RULE_INT : '0'..'9' ('0'..'9'|'_')*;
+
+RULE_DECIMAL : RULE_INT (('e'|'E') ('+'|'-')? RULE_INT)? (('b'|'B') ('i'|'I'|'d'|'D')|('l'|'L'|'d'|'D'|'f'|'F'))?;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens
new file mode 100644
index 0000000..39fb474
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens
@@ -0,0 +1,245 @@
+'!'=74
+'!='=59
+'!=='=61
+'#'=45
+'%'=73
+'%='=52
+'&&'=57
+'&'=108
+'('=41
+')'=43
+'*'=39
+'**'=71
+'*='=50
+'+'=69
+'++'=76
+'+='=48
+','=42
+'-'=70
+'--'=77
+'-='=49
+'->'=63
+'.'=38
+'..'=65
+'..<'=64
+'/'=72
+'/='=51
+':'=84
+'::'=78
+';'=20
+'<'=53
+'<>'=67
+'='=44
+'=='=58
+'==='=60
+'=>'=66
+'>'=54
+'>='=55
+'?'=107
+'?.'=79
+'?:'=68
+'@'=40
+'Boolean'=118
+'Date'=119
+'Integer'=117
+'Numeric'=116
+'String'=115
+'Time'=120
+'TimeDays'=127
+'TimeHalfYears'=123
+'TimeHours'=128
+'TimeMinutes'=129
+'TimeMonths'=125
+'TimeQuarters'=124
+'TimeSeconds'=130
+'TimeWeeks'=126
+'TimeYears'=122
+'Timestamp'=121
+'['=46
+']'=47
+'allMemberName='=25
+'as'=75
+'avg'=113
+'case'=86
+'catch'=106
+'column='=30
+'count'=110
+'cube'=16
+'default'=85
+'defaultMeasure'=17
+'defaultMember='=26
+'dimension'=21
+'dimensionUsage'=18
+'distinct-count'=114
+'do'=89
+'else'=82
+'entity'=27
+'extends'=92
+'extension'=94
+'false'=97
+'finally'=104
+'for'=87
+'hasAll'=24
+'hierarchy'=23
+'if'=81
+'import'=37
+'instanceof'=62
+'key='=28
+'level'=29
+'levelType='=32
+'max'=112
+'measure'=35
+'min'=111
+'new'=96
+'notVisible'=36
+'null'=99
+'over'=19
+'package'=13
+'property'=33
+'return'=102
+'static'=93
+'sum'=109
+'super'=95
+'switch'=83
+'synchronized'=105
+'throw'=101
+'true'=98
+'try'=103
+'type='=34
+'typeTime'=22
+'typeof'=100
+'uniqueMembers'=31
+'val'=91
+'var'=90
+'while'=88
+'{'=14
+'|'=80
+'||'=56
+'}'=15
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=4
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=5
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLLexer.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLLexer.java
new file mode 100644
index 0000000..87bfa26
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLLexer.java
@@ -0,0 +1,5068 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalCubeDSLLexer extends Lexer {
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int T__130=130;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    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;
+
+    // delegates
+    // delegators
+
+    public InternalCubeDSLLexer() {;} 
+    public InternalCubeDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalCubeDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:11:7: ( 'package' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:11:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:12:7: ( '{' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:12:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:13:7: ( '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:13:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:14:7: ( 'cube' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:14:9: 'cube'
+            {
+            match("cube"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:15:7: ( 'defaultMeasure' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:15:9: 'defaultMeasure'
+            {
+            match("defaultMeasure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:16:7: ( 'dimensionUsage' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:16:9: 'dimensionUsage'
+            {
+            match("dimensionUsage"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:17:7: ( 'over' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:17:9: 'over'
+            {
+            match("over"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:18:7: ( ';' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:18:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:19:7: ( 'dimension' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:19:9: 'dimension'
+            {
+            match("dimension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:20:7: ( 'typeTime' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:20:9: 'typeTime'
+            {
+            match("typeTime"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "T__23"
+    public final void mT__23() throws RecognitionException {
+        try {
+            int _type = T__23;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:21:7: ( 'hierarchy' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:21:9: 'hierarchy'
+            {
+            match("hierarchy"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__23"
+
+    // $ANTLR start "T__24"
+    public final void mT__24() throws RecognitionException {
+        try {
+            int _type = T__24;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:22:7: ( 'hasAll' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:22:9: 'hasAll'
+            {
+            match("hasAll"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__24"
+
+    // $ANTLR start "T__25"
+    public final void mT__25() throws RecognitionException {
+        try {
+            int _type = T__25;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:23:7: ( 'allMemberName=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:23:9: 'allMemberName='
+            {
+            match("allMemberName="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__25"
+
+    // $ANTLR start "T__26"
+    public final void mT__26() throws RecognitionException {
+        try {
+            int _type = T__26;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:24:7: ( 'defaultMember=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:24:9: 'defaultMember='
+            {
+            match("defaultMember="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__26"
+
+    // $ANTLR start "T__27"
+    public final void mT__27() throws RecognitionException {
+        try {
+            int _type = T__27;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:25:7: ( 'entity' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:25:9: 'entity'
+            {
+            match("entity"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__27"
+
+    // $ANTLR start "T__28"
+    public final void mT__28() throws RecognitionException {
+        try {
+            int _type = T__28;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:26:7: ( 'key=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:26:9: 'key='
+            {
+            match("key="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__28"
+
+    // $ANTLR start "T__29"
+    public final void mT__29() throws RecognitionException {
+        try {
+            int _type = T__29;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:27:7: ( 'level' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:27:9: 'level'
+            {
+            match("level"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__29"
+
+    // $ANTLR start "T__30"
+    public final void mT__30() throws RecognitionException {
+        try {
+            int _type = T__30;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:28:7: ( 'column=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:28:9: 'column='
+            {
+            match("column="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__30"
+
+    // $ANTLR start "T__31"
+    public final void mT__31() throws RecognitionException {
+        try {
+            int _type = T__31;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:29:7: ( 'uniqueMembers' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:29:9: 'uniqueMembers'
+            {
+            match("uniqueMembers"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__31"
+
+    // $ANTLR start "T__32"
+    public final void mT__32() throws RecognitionException {
+        try {
+            int _type = T__32;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:30:7: ( 'levelType=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:30:9: 'levelType='
+            {
+            match("levelType="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__32"
+
+    // $ANTLR start "T__33"
+    public final void mT__33() throws RecognitionException {
+        try {
+            int _type = T__33;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:31:7: ( 'property' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:31:9: 'property'
+            {
+            match("property"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__33"
+
+    // $ANTLR start "T__34"
+    public final void mT__34() throws RecognitionException {
+        try {
+            int _type = T__34;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:32:7: ( 'type=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:32:9: 'type='
+            {
+            match("type="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__34"
+
+    // $ANTLR start "T__35"
+    public final void mT__35() throws RecognitionException {
+        try {
+            int _type = T__35;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:33:7: ( 'measure' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:33:9: 'measure'
+            {
+            match("measure"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__35"
+
+    // $ANTLR start "T__36"
+    public final void mT__36() throws RecognitionException {
+        try {
+            int _type = T__36;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:34:7: ( 'notVisible' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:34:9: 'notVisible'
+            {
+            match("notVisible"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__36"
+
+    // $ANTLR start "T__37"
+    public final void mT__37() throws RecognitionException {
+        try {
+            int _type = T__37;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:35:7: ( 'import' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:35:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__37"
+
+    // $ANTLR start "T__38"
+    public final void mT__38() throws RecognitionException {
+        try {
+            int _type = T__38;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:36:7: ( '.' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:36:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__38"
+
+    // $ANTLR start "T__39"
+    public final void mT__39() throws RecognitionException {
+        try {
+            int _type = T__39;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:37:7: ( '*' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:37:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__39"
+
+    // $ANTLR start "T__40"
+    public final void mT__40() throws RecognitionException {
+        try {
+            int _type = T__40;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:38:7: ( '@' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:38:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__40"
+
+    // $ANTLR start "T__41"
+    public final void mT__41() throws RecognitionException {
+        try {
+            int _type = T__41;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:39:7: ( '(' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:39:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__41"
+
+    // $ANTLR start "T__42"
+    public final void mT__42() throws RecognitionException {
+        try {
+            int _type = T__42;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:40:7: ( ',' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:40:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__42"
+
+    // $ANTLR start "T__43"
+    public final void mT__43() throws RecognitionException {
+        try {
+            int _type = T__43;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:41:7: ( ')' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:41:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__43"
+
+    // $ANTLR start "T__44"
+    public final void mT__44() throws RecognitionException {
+        try {
+            int _type = T__44;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:42:7: ( '=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:42:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:43:7: ( '#' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:43:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:44:7: ( '[' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:44:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__46"
+
+    // $ANTLR start "T__47"
+    public final void mT__47() throws RecognitionException {
+        try {
+            int _type = T__47;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:45:7: ( ']' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:45:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__47"
+
+    // $ANTLR start "T__48"
+    public final void mT__48() throws RecognitionException {
+        try {
+            int _type = T__48;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:46:7: ( '+=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:46:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:47:7: ( '-=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:47:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:48:7: ( '*=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:48:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:49:7: ( '/=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:49:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:50:7: ( '%=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:50:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:51:7: ( '<' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:51:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__53"
+
+    // $ANTLR start "T__54"
+    public final void mT__54() throws RecognitionException {
+        try {
+            int _type = T__54;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:52:7: ( '>' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:52:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__54"
+
+    // $ANTLR start "T__55"
+    public final void mT__55() throws RecognitionException {
+        try {
+            int _type = T__55;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:53:7: ( '>=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:53:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__55"
+
+    // $ANTLR start "T__56"
+    public final void mT__56() throws RecognitionException {
+        try {
+            int _type = T__56;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:54:7: ( '||' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:54:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__56"
+
+    // $ANTLR start "T__57"
+    public final void mT__57() throws RecognitionException {
+        try {
+            int _type = T__57;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:55:7: ( '&&' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:55:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:56:7: ( '==' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:56:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:57:7: ( '!=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:57:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:58:7: ( '===' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:58:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__60"
+
+    // $ANTLR start "T__61"
+    public final void mT__61() throws RecognitionException {
+        try {
+            int _type = T__61;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:59:7: ( '!==' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:59:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__61"
+
+    // $ANTLR start "T__62"
+    public final void mT__62() throws RecognitionException {
+        try {
+            int _type = T__62;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:60:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:60:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__62"
+
+    // $ANTLR start "T__63"
+    public final void mT__63() throws RecognitionException {
+        try {
+            int _type = T__63;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:61:7: ( '->' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:61:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__63"
+
+    // $ANTLR start "T__64"
+    public final void mT__64() throws RecognitionException {
+        try {
+            int _type = T__64;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:62:7: ( '..<' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:62:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__64"
+
+    // $ANTLR start "T__65"
+    public final void mT__65() throws RecognitionException {
+        try {
+            int _type = T__65;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:63:7: ( '..' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:63:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__65"
+
+    // $ANTLR start "T__66"
+    public final void mT__66() throws RecognitionException {
+        try {
+            int _type = T__66;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:64:7: ( '=>' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:64:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__66"
+
+    // $ANTLR start "T__67"
+    public final void mT__67() throws RecognitionException {
+        try {
+            int _type = T__67;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:65:7: ( '<>' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:65:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__67"
+
+    // $ANTLR start "T__68"
+    public final void mT__68() throws RecognitionException {
+        try {
+            int _type = T__68;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:66:7: ( '?:' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:66:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__68"
+
+    // $ANTLR start "T__69"
+    public final void mT__69() throws RecognitionException {
+        try {
+            int _type = T__69;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:67:7: ( '+' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:67:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__69"
+
+    // $ANTLR start "T__70"
+    public final void mT__70() throws RecognitionException {
+        try {
+            int _type = T__70;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:68:7: ( '-' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:68:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__70"
+
+    // $ANTLR start "T__71"
+    public final void mT__71() throws RecognitionException {
+        try {
+            int _type = T__71;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:69:7: ( '**' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:69:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:70:7: ( '/' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:70:9: '/'
+            {
+            match('/'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:71:7: ( '%' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:71:9: '%'
+            {
+            match('%'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__73"
+
+    // $ANTLR start "T__74"
+    public final void mT__74() throws RecognitionException {
+        try {
+            int _type = T__74;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:72:7: ( '!' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:72:9: '!'
+            {
+            match('!'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:73:7: ( 'as' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:73:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:74:7: ( '++' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:74:9: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:75:7: ( '--' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:75:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__77"
+
+    // $ANTLR start "T__78"
+    public final void mT__78() throws RecognitionException {
+        try {
+            int _type = T__78;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:76:7: ( '::' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:76:9: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:77:7: ( '?.' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:77:9: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:78:7: ( '|' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:78:9: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:79:7: ( 'if' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:79:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__81"
+
+    // $ANTLR start "T__82"
+    public final void mT__82() throws RecognitionException {
+        try {
+            int _type = T__82;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:80:7: ( 'else' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:80:9: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__82"
+
+    // $ANTLR start "T__83"
+    public final void mT__83() throws RecognitionException {
+        try {
+            int _type = T__83;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:7: ( 'switch' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:9: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__83"
+
+    // $ANTLR start "T__84"
+    public final void mT__84() throws RecognitionException {
+        try {
+            int _type = T__84;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:82:7: ( ':' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:82:9: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:83:7: ( 'default' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:83:9: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__85"
+
+    // $ANTLR start "T__86"
+    public final void mT__86() throws RecognitionException {
+        try {
+            int _type = T__86;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:84:7: ( 'case' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:84:9: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__86"
+
+    // $ANTLR start "T__87"
+    public final void mT__87() throws RecognitionException {
+        try {
+            int _type = T__87;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:85:7: ( 'for' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:85:9: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:86:7: ( 'while' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:86:9: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:87:7: ( 'do' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:87:9: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:7: ( 'var' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:89:7: ( 'val' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:89:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:90:7: ( 'extends' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:90:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:91:7: ( 'static' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:91:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:92:7: ( 'extension' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:92:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__94"
+
+    // $ANTLR start "T__95"
+    public final void mT__95() throws RecognitionException {
+        try {
+            int _type = T__95;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:93:7: ( 'super' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:93:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__95"
+
+    // $ANTLR start "T__96"
+    public final void mT__96() throws RecognitionException {
+        try {
+            int _type = T__96;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:94:7: ( 'new' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:94:9: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__96"
+
+    // $ANTLR start "T__97"
+    public final void mT__97() throws RecognitionException {
+        try {
+            int _type = T__97;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:95:7: ( 'false' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:95:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__97"
+
+    // $ANTLR start "T__98"
+    public final void mT__98() throws RecognitionException {
+        try {
+            int _type = T__98;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:96:7: ( 'true' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:96:9: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__98"
+
+    // $ANTLR start "T__99"
+    public final void mT__99() throws RecognitionException {
+        try {
+            int _type = T__99;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:97:7: ( 'null' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:97:9: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__99"
+
+    // $ANTLR start "T__100"
+    public final void mT__100() throws RecognitionException {
+        try {
+            int _type = T__100;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:98:8: ( 'typeof' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:98:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:99:8: ( 'throw' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:99:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:100:8: ( 'return' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:100:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__102"
+
+    // $ANTLR start "T__103"
+    public final void mT__103() throws RecognitionException {
+        try {
+            int _type = T__103;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:101:8: ( 'try' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:101:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:102:8: ( 'finally' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:102:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__104"
+
+    // $ANTLR start "T__105"
+    public final void mT__105() throws RecognitionException {
+        try {
+            int _type = T__105;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:103:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:103:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:104:8: ( 'catch' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:104:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:105:8: ( '?' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:105:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__107"
+
+    // $ANTLR start "T__108"
+    public final void mT__108() throws RecognitionException {
+        try {
+            int _type = T__108;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:106:8: ( '&' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:106:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__108"
+
+    // $ANTLR start "T__109"
+    public final void mT__109() throws RecognitionException {
+        try {
+            int _type = T__109;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:107:8: ( 'sum' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:107:10: 'sum'
+            {
+            match("sum"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:108:8: ( 'count' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:108:10: 'count'
+            {
+            match("count"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__110"
+
+    // $ANTLR start "T__111"
+    public final void mT__111() throws RecognitionException {
+        try {
+            int _type = T__111;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:109:8: ( 'min' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:109:10: 'min'
+            {
+            match("min"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__111"
+
+    // $ANTLR start "T__112"
+    public final void mT__112() throws RecognitionException {
+        try {
+            int _type = T__112;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:110:8: ( 'max' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:110:10: 'max'
+            {
+            match("max"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
+    // $ANTLR start "T__113"
+    public final void mT__113() throws RecognitionException {
+        try {
+            int _type = T__113;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:111:8: ( 'avg' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:111:10: 'avg'
+            {
+            match("avg"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__113"
+
+    // $ANTLR start "T__114"
+    public final void mT__114() throws RecognitionException {
+        try {
+            int _type = T__114;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:112:8: ( 'distinct-count' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:112:10: 'distinct-count'
+            {
+            match("distinct-count"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__114"
+
+    // $ANTLR start "T__115"
+    public final void mT__115() throws RecognitionException {
+        try {
+            int _type = T__115;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:113:8: ( 'String' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:113:10: 'String'
+            {
+            match("String"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__115"
+
+    // $ANTLR start "T__116"
+    public final void mT__116() throws RecognitionException {
+        try {
+            int _type = T__116;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:114:8: ( 'Numeric' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:114:10: 'Numeric'
+            {
+            match("Numeric"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__116"
+
+    // $ANTLR start "T__117"
+    public final void mT__117() throws RecognitionException {
+        try {
+            int _type = T__117;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:115:8: ( 'Integer' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:115:10: 'Integer'
+            {
+            match("Integer"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__117"
+
+    // $ANTLR start "T__118"
+    public final void mT__118() throws RecognitionException {
+        try {
+            int _type = T__118;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:116:8: ( 'Boolean' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:116:10: 'Boolean'
+            {
+            match("Boolean"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__118"
+
+    // $ANTLR start "T__119"
+    public final void mT__119() throws RecognitionException {
+        try {
+            int _type = T__119;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:117:8: ( 'Date' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:117:10: 'Date'
+            {
+            match("Date"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__119"
+
+    // $ANTLR start "T__120"
+    public final void mT__120() throws RecognitionException {
+        try {
+            int _type = T__120;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:118:8: ( 'Time' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:118:10: 'Time'
+            {
+            match("Time"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__120"
+
+    // $ANTLR start "T__121"
+    public final void mT__121() throws RecognitionException {
+        try {
+            int _type = T__121;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:119:8: ( 'Timestamp' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:119:10: 'Timestamp'
+            {
+            match("Timestamp"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__121"
+
+    // $ANTLR start "T__122"
+    public final void mT__122() throws RecognitionException {
+        try {
+            int _type = T__122;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:120:8: ( 'TimeYears' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:120:10: 'TimeYears'
+            {
+            match("TimeYears"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__122"
+
+    // $ANTLR start "T__123"
+    public final void mT__123() throws RecognitionException {
+        try {
+            int _type = T__123;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:121:8: ( 'TimeHalfYears' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:121:10: 'TimeHalfYears'
+            {
+            match("TimeHalfYears"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__123"
+
+    // $ANTLR start "T__124"
+    public final void mT__124() throws RecognitionException {
+        try {
+            int _type = T__124;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:122:8: ( 'TimeQuarters' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:122:10: 'TimeQuarters'
+            {
+            match("TimeQuarters"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__124"
+
+    // $ANTLR start "T__125"
+    public final void mT__125() throws RecognitionException {
+        try {
+            int _type = T__125;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:123:8: ( 'TimeMonths' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:123:10: 'TimeMonths'
+            {
+            match("TimeMonths"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__125"
+
+    // $ANTLR start "T__126"
+    public final void mT__126() throws RecognitionException {
+        try {
+            int _type = T__126;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:124:8: ( 'TimeWeeks' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:124:10: 'TimeWeeks'
+            {
+            match("TimeWeeks"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__126"
+
+    // $ANTLR start "T__127"
+    public final void mT__127() throws RecognitionException {
+        try {
+            int _type = T__127;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:125:8: ( 'TimeDays' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:125:10: 'TimeDays'
+            {
+            match("TimeDays"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__127"
+
+    // $ANTLR start "T__128"
+    public final void mT__128() throws RecognitionException {
+        try {
+            int _type = T__128;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:8: ( 'TimeHours' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:10: 'TimeHours'
+            {
+            match("TimeHours"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__128"
+
+    // $ANTLR start "T__129"
+    public final void mT__129() throws RecognitionException {
+        try {
+            int _type = T__129;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:127:8: ( 'TimeMinutes' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:127:10: 'TimeMinutes'
+            {
+            match("TimeMinutes"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__129"
+
+    // $ANTLR start "T__130"
+    public final void mT__130() throws RecognitionException {
+        try {
+            int _type = T__130;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:128:8: ( 'TimeSeconds' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:128:10: 'TimeSeconds'
+            {
+            match("TimeSeconds"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__130"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:12: ( '0x' | '0X' )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='0') ) {
+                int LA1_1 = input.LA(2);
+
+                if ( (LA1_1=='x') ) {
+                    alt1=1;
+                }
+                else if ( (LA1_1=='X') ) {
+                    alt1=2;
+                }
+                else {
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 1, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            int cnt2=0;
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='F')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='f')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt2 >= 1 ) break loop2;
+                        EarlyExitException eee =
+                            new EarlyExitException(2, input);
+                        throw eee;
+                }
+                cnt2++;
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0=='#') ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    int alt3=2;
+                    int LA3_0 = input.LA(1);
+
+                    if ( (LA3_0=='B'||LA3_0=='b') ) {
+                        alt3=1;
+                    }
+                    else if ( (LA3_0=='L'||LA3_0=='l') ) {
+                        alt3=2;
+                    }
+                    else {
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 3, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt3) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            {
+                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:84: ( 'l' | 'L' )
+                            {
+                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_HEX"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8057:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8057:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8057:21: ( '0' .. '9' | '_' )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>='0' && LA5_0<='9')||LA5_0=='_') ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_DECIMAL"
+    public final void mRULE_DECIMAL() throws RecognitionException {
+        try {
+            int _type = RULE_DECIMAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0=='E'||LA7_0=='e') ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    {
+                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+                            {
+                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
+                                input.consume();
+
+                            }
+                            else {
+                                MismatchedSetException mse = new MismatchedSetException(null,input);
+                                recover(mse);
+                                throw mse;}
+
+
+                            }
+                            break;
+
+                    }
+
+                    mRULE_INT(); 
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            int alt8=3;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0=='B'||LA8_0=='b') ) {
+                alt8=1;
+            }
+            else if ( (LA8_0=='D'||LA8_0=='F'||LA8_0=='L'||LA8_0=='d'||LA8_0=='f'||LA8_0=='l') ) {
+                alt8=2;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    {
+                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
+                        input.consume();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059: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();
+
+                    }
+                    else {
+                        MismatchedSetException mse = new MismatchedSetException(null,input);
+                        recover(mse);
+                        throw mse;}
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_DECIMAL"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( (LA10_0=='$'||(LA10_0>='0' && LA10_0<='9')||(LA10_0>='A' && LA10_0<='Z')||LA10_0=='_'||(LA10_0>='a' && LA10_0<='z')) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( input.LA(1)=='$'||(input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0=='\"') ) {
+                alt15=1;
+            }
+            else if ( (LA15_0=='\'') ) {
+                alt15=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+            switch (alt15) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop11:
+                    do {
+                        int alt11=3;
+                        int LA11_0 = input.LA(1);
+
+                        if ( (LA11_0=='\\') ) {
+                            alt11=1;
+                        }
+                        else if ( ((LA11_0>='\u0000' && LA11_0<='!')||(LA11_0>='#' && LA11_0<='[')||(LA11_0>=']' && LA11_0<='\uFFFF')) ) {
+                            alt11=2;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop13:
+                    do {
+                        int alt13=3;
+                        int LA13_0 = input.LA(1);
+
+                        if ( (LA13_0=='\\') ) {
+                            alt13=1;
+                        }
+                        else if ( ((LA13_0>='\u0000' && LA13_0<='&')||(LA13_0>='(' && LA13_0<='[')||(LA13_0>=']' && LA13_0<='\uFFFF')) ) {
+                            alt13=2;
+                        }
+
+
+                        switch (alt13) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop13;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:79: '\\''
+                            {
+                            match('\''); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:24: ( options {greedy=false; } : . )*
+            loop16:
+            do {
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+
+                if ( (LA16_0=='*') ) {
+                    int LA16_1 = input.LA(2);
+
+                    if ( (LA16_1=='/') ) {
+                        alt16=2;
+                    }
+                    else if ( ((LA16_1>='\u0000' && LA16_1<='.')||(LA16_1>='0' && LA16_1<='\uFFFF')) ) {
+                        alt16=1;
+                    }
+
+
+                }
+                else if ( ((LA16_0>='\u0000' && LA16_0<=')')||(LA16_0>='+' && LA16_0<='\uFFFF')) ) {
+                    alt16=1;
+                }
+
+
+                switch (alt16) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop16;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( ((LA17_0>='\u0000' && LA17_0<='\t')||(LA17_0>='\u000B' && LA17_0<='\f')||(LA17_0>='\u000E' && LA17_0<='\uFFFF')) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067: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();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:40: ( ( '\\r' )? '\\n' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0=='\n'||LA19_0=='\r') ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8069:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8069:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8069:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt20=0;
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( ((LA20_0>='\t' && LA20_0<='\n')||LA20_0=='\r'||LA20_0==' ') ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt20 >= 1 ) break loop20;
+                        EarlyExitException eee =
+                            new EarlyExitException(20, input);
+                        throw eee;
+                }
+                cnt20++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8071:16: ( . )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8071:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=127;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:749: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:758: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:767: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:780: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:788: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:800: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:816: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:832: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:840: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\74\2\uffff\3\74\1\uffff\12\74\1\137\1\142\4\uffff\1\151\3\uffff\1\157\1\163\1\167\1\171\1\173\1\175\1\177\1\u0081\1\u0083\1\u0086\1\u0088\13\74\2\u009b\1\71\5\uffff\2\74\3\uffff\5\74\1\u00a9\1\74\1\uffff\6\74\1\u00b2\17\74\1\u00c2\1\u00c4\10\uffff\1\u00c6\32\uffff\1\u00c8\6\uffff\20\74\1\uffff\1\u009b\4\uffff\12\74\1\uffff\3\74\1\u00e8\4\74\1\uffff\1\u00ed\7\74\1\u00f5\1\u00f6\1\74\1\u00f8\3\74\7\uffff\3\74\1\u00ff\1\74\1\u0101\3\74\1\u0105\1\u0106\11\74\1\u0110\2\74\1\u0113\4\74\1\u0118\1\74\1\u011c\1\uffff\4\74\1\uffff\1\74\1\u0122\1\74\1\uffff\3\74\2\uffff\1\74\1\uffff\1\u0128\5\74\1\uffff\1\74\1\uffff\3\74\2\uffff\5\74\1\u0137\1\u0140\2\74\1\uffff\1\74\1\u0144\1\uffff\1\u0145\3\74\1\uffff\1\74\1\uffff\1\74\1\uffff\1\u014b\4\74\1\uffff\1\74\1\u0153\3\74\1\uffff\4\74\1\u015b\1\74\1\u015d\1\74\1\u015f\5\74\1\uffff\10\74\1\uffff\3\74\2\uffff\4\74\1\u0176\1\uffff\1\74\1\u0178\1\74\1\u017a\3\74\1\uffff\3\74\1\u0181\1\74\1\u0183\1\u0184\1\uffff\1\74\1\uffff\1\74\1\uffff\1\u0187\1\u0188\15\74\1\u0196\1\74\1\uffff\1\u0199\3\74\1\uffff\1\74\1\uffff\1\74\1\uffff\1\u019f\3\74\1\u01a3\1\74\1\uffff\1\74\2\uffff\1\74\1\u01a7\2\uffff\1\u01a8\1\u01a9\1\u01aa\12\74\1\uffff\1\u01b5\1\74\1\uffff\2\74\1\u01b9\2\74\1\uffff\3\74\1\uffff\3\74\4\uffff\10\74\1\u01ca\1\74\1\uffff\1\74\1\u01cf\2\uffff\1\u01d0\1\74\1\u01d2\5\74\1\u01d8\1\u01d9\1\74\1\u01db\3\74\1\u01df\1\uffff\4\74\2\uffff\1\74\2\uffff\1\74\1\u01e6\1\u01e7\1\74\2\uffff\1\74\1\uffff\1\74\1\u01eb\1\74\1\uffff\6\74\2\uffff\3\74\1\uffff\1\u01f6\1\u01f7\5\74\1\u01fd\1\74\1\u01ff\2\uffff\4\74\1\u0204\1\uffff\1\u0205\1\uffff\1\u0206\1\uffff\1\u0207\5\uffff";
+    static final String DFA21_eofS =
+        "\u0208\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\141\2\uffff\1\141\1\145\1\166\1\uffff\1\150\1\141\2\154\2\145\1\156\1\141\1\145\1\146\1\56\1\52\4\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\164\1\141\1\150\1\141\1\145\1\164\1\165\1\156\1\157\1\141\1\151\2\60\1\44\5\uffff\1\143\1\157\3\uffff\1\142\1\154\1\163\1\146\1\155\1\44\1\145\1\uffff\1\160\1\165\1\162\1\145\1\163\1\154\1\44\1\147\1\164\1\163\1\164\1\171\1\166\1\151\1\141\1\156\1\170\1\164\1\167\1\154\1\160\1\163\1\44\1\74\10\uffff\1\75\32\uffff\1\75\6\uffff\1\151\1\141\1\155\1\156\1\162\1\154\1\156\1\151\1\154\1\164\1\162\1\155\1\164\1\157\1\164\1\155\1\uffff\1\60\4\uffff\1\153\1\160\1\145\1\165\1\156\1\145\1\143\1\141\1\145\1\164\1\uffff\1\162\2\145\1\44\1\157\1\162\1\101\1\115\1\uffff\1\44\1\151\2\145\1\75\1\145\1\161\1\163\2\44\1\126\1\44\1\154\1\157\1\164\7\uffff\2\164\1\145\1\44\1\143\1\44\1\163\1\141\1\154\2\44\1\165\1\151\2\145\1\154\2\145\1\141\1\145\1\44\1\155\1\164\1\44\1\150\1\165\1\156\1\151\1\44\1\75\1\44\1\uffff\1\167\1\141\1\154\1\145\1\uffff\1\164\1\44\1\156\1\uffff\1\154\2\165\2\uffff\1\151\1\uffff\1\44\1\162\1\141\1\143\1\151\1\162\1\uffff\1\150\1\uffff\1\145\1\154\1\145\2\uffff\1\162\1\156\1\162\1\147\1\145\2\44\1\147\1\162\1\uffff\1\156\1\44\1\uffff\1\44\1\154\1\163\1\156\1\uffff\1\151\1\uffff\1\146\1\uffff\1\44\1\162\1\154\1\155\1\171\1\uffff\1\144\1\44\1\145\1\162\1\163\1\uffff\1\164\1\156\1\150\1\143\1\44\1\162\1\44\1\154\1\44\1\156\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\141\1\165\1\151\1\145\1\141\1\145\1\uffff\1\145\1\164\1\75\2\uffff\1\164\1\151\1\143\1\155\1\44\1\uffff\1\143\1\44\1\142\1\44\1\163\1\151\1\171\1\uffff\1\115\1\145\1\151\1\44\1\143\2\44\1\uffff\1\157\1\uffff\1\171\1\uffff\2\44\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\44\1\171\1\uffff\1\44\1\157\1\164\1\145\1\uffff\1\150\1\uffff\1\145\1\uffff\1\44\1\157\1\160\1\145\1\44\1\142\1\uffff\1\145\2\uffff\1\156\1\44\2\uffff\3\44\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\uffff\1\44\1\145\1\uffff\1\156\1\55\1\44\1\171\1\162\1\uffff\1\156\1\145\1\155\1\uffff\1\154\1\157\1\151\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\44\1\156\1\uffff\1\141\1\44\2\uffff\1\44\1\116\1\44\1\75\1\142\1\145\1\146\1\172\2\44\1\145\1\44\1\145\1\163\1\145\1\44\1\uffff\1\144\1\163\1\142\1\163\2\uffff\1\141\2\uffff\1\145\2\44\1\145\2\uffff\1\141\1\uffff\1\162\1\44\1\163\1\uffff\1\163\1\165\1\145\1\141\1\155\1\162\2\uffff\1\144\1\162\1\163\1\uffff\2\44\2\162\1\147\1\145\1\163\1\44\1\163\1\44\2\uffff\1\145\1\75\1\145\1\75\1\44\1\uffff\1\44\1\uffff\1\44\1\uffff\1\44\5\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\162\2\uffff\1\165\1\157\1\166\1\uffff\1\171\1\151\1\166\1\170\2\145\1\156\1\151\1\165\1\156\1\56\1\75\4\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\2\72\1\171\1\157\1\150\1\141\1\145\1\164\1\165\1\156\1\157\1\141\1\151\1\170\1\154\1\172\5\uffff\1\143\1\157\3\uffff\1\142\1\165\1\164\1\146\1\163\1\172\1\145\1\uffff\1\160\1\171\1\162\1\145\1\163\1\154\1\172\1\147\1\164\1\163\1\164\1\171\1\166\1\151\1\141\1\156\1\170\1\164\1\167\1\154\1\160\1\163\1\172\1\74\10\uffff\1\75\32\uffff\1\75\6\uffff\1\151\1\141\1\160\1\156\1\162\1\154\1\156\1\151\1\162\1\164\1\162\1\155\1\164\1\157\1\164\1\155\1\uffff\1\154\4\uffff\1\153\1\160\1\145\1\165\1\156\1\145\1\143\1\141\1\145\1\164\1\uffff\1\162\2\145\1\172\1\157\1\162\1\101\1\115\1\uffff\1\172\1\151\2\145\1\75\1\145\1\161\1\163\2\172\1\126\1\172\1\154\1\157\1\164\7\uffff\2\164\1\145\1\172\1\143\1\172\1\163\1\141\1\154\2\172\1\165\1\151\2\145\1\154\2\145\1\141\1\145\1\172\1\155\1\164\1\172\1\150\1\165\1\156\1\151\1\172\1\157\1\172\1\uffff\1\167\1\141\1\154\1\145\1\uffff\1\164\1\172\1\156\1\uffff\1\154\2\165\2\uffff\1\151\1\uffff\1\172\1\162\1\141\1\143\1\151\1\162\1\uffff\1\150\1\uffff\1\145\1\154\1\145\2\uffff\1\162\1\156\1\162\1\147\1\145\2\172\1\147\1\162\1\uffff\1\156\1\172\1\uffff\1\172\1\154\1\163\1\156\1\uffff\1\151\1\uffff\1\146\1\uffff\1\172\1\162\1\154\1\155\1\171\1\uffff\1\163\1\172\1\145\1\162\1\163\1\uffff\1\164\1\156\1\150\1\143\1\172\1\162\1\172\1\154\1\172\1\156\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\157\1\165\1\157\1\145\1\141\1\145\1\uffff\1\145\1\164\1\75\2\uffff\1\164\1\151\1\143\1\155\1\172\1\uffff\1\143\1\172\1\142\1\172\1\163\1\151\1\171\1\uffff\1\115\1\145\1\151\1\172\1\143\2\172\1\uffff\1\157\1\uffff\1\171\1\uffff\2\172\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\172\1\171\1\uffff\1\172\1\157\1\164\1\145\1\uffff\1\150\1\uffff\1\145\1\uffff\1\172\1\157\1\160\1\145\1\172\1\142\1\uffff\1\145\2\uffff\1\156\1\172\2\uffff\3\172\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\uffff\1\172\1\145\1\uffff\1\156\1\55\1\172\1\171\1\162\1\uffff\1\156\1\145\1\155\1\uffff\1\154\1\157\1\151\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\172\1\156\1\uffff\1\155\1\172\2\uffff\1\172\1\116\1\172\1\75\1\142\1\145\1\146\3\172\1\145\1\172\1\145\1\163\1\145\1\172\1\uffff\1\144\1\163\1\142\1\163\2\uffff\1\141\2\uffff\1\145\2\172\1\145\2\uffff\1\141\1\uffff\1\162\1\172\1\163\1\uffff\1\163\1\165\1\145\1\141\1\155\1\162\2\uffff\1\144\1\162\1\163\1\uffff\2\172\2\162\1\147\1\145\1\163\1\172\1\163\1\172\2\uffff\1\145\1\75\1\145\1\75\1\172\1\uffff\1\172\1\uffff\1\172\1\uffff\1\172\5\uffff";
+    static final String DFA21_acceptS =
+        "\2\uffff\1\2\1\3\3\uffff\1\10\14\uffff\1\34\1\35\1\36\1\37\1\uffff\1\41\1\42\1\43\31\uffff\1\172\2\173\1\176\1\177\2\uffff\1\172\1\2\1\3\7\uffff\1\10\30\uffff\1\32\1\46\1\73\1\33\1\34\1\35\1\36\1\37\1\uffff\1\66\1\40\1\41\1\42\1\43\1\44\1\100\1\71\1\45\1\63\1\101\1\72\1\47\1\174\1\175\1\74\1\50\1\75\1\67\1\51\1\53\1\52\1\54\1\104\1\55\1\140\1\uffff\1\76\1\70\1\103\1\137\1\102\1\110\20\uffff\1\167\1\uffff\1\170\1\171\1\173\1\176\12\uffff\1\115\10\uffff\1\77\17\uffff\1\105\1\64\1\65\1\60\1\56\1\61\1\57\37\uffff\1\133\4\uffff\1\145\3\uffff\1\20\3\uffff\1\143\1\144\1\uffff\1\124\6\uffff\1\141\1\uffff\1\113\3\uffff\1\116\1\117\11\uffff\1\4\2\uffff\1\112\4\uffff\1\7\1\uffff\1\26\1\uffff\1\126\5\uffff\1\106\5\uffff\1\127\16\uffff\1\153\10\uffff\1\154\3\uffff\1\142\1\136\5\uffff\1\131\7\uffff\1\21\7\uffff\1\123\1\uffff\1\125\1\uffff\1\114\21\uffff\1\22\4\uffff\1\130\1\uffff\1\14\1\uffff\1\17\6\uffff\1\31\1\uffff\1\107\1\121\2\uffff\1\132\1\147\15\uffff\1\1\2\uffff\1\111\5\uffff\1\120\3\uffff\1\27\3\uffff\1\134\1\150\1\151\1\152\12\uffff\1\25\2\uffff\1\146\1\12\20\uffff\1\163\4\uffff\1\11\1\13\1\uffff\1\122\1\24\4\uffff\1\155\1\156\1\uffff\1\164\3\uffff\1\162\6\uffff\1\30\1\62\3\uffff\1\161\12\uffff\1\165\1\166\5\uffff\1\135\1\uffff\1\160\1\uffff\1\16\1\uffff\1\15\1\23\1\157\1\5\1\6";
+    static final String DFA21_specialS =
+        "\1\0\u0207\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\71\2\70\2\71\1\70\22\71\1\70\1\44\1\66\1\31\1\65\1\37\1\43\1\67\1\25\1\27\1\23\1\34\1\26\1\35\1\22\1\36\1\62\11\63\1\46\1\7\1\40\1\30\1\41\1\45\1\24\1\65\1\57\1\65\1\60\4\65\1\56\4\65\1\55\4\65\1\54\1\61\6\65\1\32\1\71\1\33\1\64\1\65\1\71\1\12\1\65\1\4\1\5\1\13\1\50\1\65\1\11\1\21\1\65\1\14\1\15\1\17\1\20\1\6\1\1\1\65\1\53\1\47\1\10\1\16\1\52\1\51\3\65\1\2\1\42\1\3\uff82\71",
+            "\1\72\20\uffff\1\73",
+            "",
+            "",
+            "\1\101\15\uffff\1\100\5\uffff\1\77",
+            "\1\102\3\uffff\1\103\5\uffff\1\104",
+            "\1\105",
+            "",
+            "\1\111\11\uffff\1\110\6\uffff\1\107",
+            "\1\113\7\uffff\1\112",
+            "\1\114\6\uffff\1\115\2\uffff\1\116",
+            "\1\120\1\uffff\1\117\11\uffff\1\121",
+            "\1\122",
+            "\1\123",
+            "\1\124",
+            "\1\127\3\uffff\1\125\3\uffff\1\126",
+            "\1\131\11\uffff\1\130\5\uffff\1\132",
+            "\1\135\6\uffff\1\133\1\134",
+            "\1\136",
+            "\1\141\22\uffff\1\140",
+            "",
+            "",
+            "",
+            "",
+            "\1\147\1\150",
+            "",
+            "",
+            "",
+            "\1\156\21\uffff\1\155",
+            "\1\162\17\uffff\1\160\1\161",
+            "\1\165\4\uffff\1\166\15\uffff\1\164",
+            "\1\170",
+            "\1\172",
+            "\1\174",
+            "\1\176",
+            "\1\u0080",
+            "\1\u0082",
+            "\1\u0085\13\uffff\1\u0084",
+            "\1\u0087",
+            "\1\u008a\1\u008b\1\uffff\1\u0089\1\uffff\1\u008c",
+            "\1\u008e\7\uffff\1\u008f\5\uffff\1\u008d",
+            "\1\u0090",
+            "\1\u0091",
+            "\1\u0092",
+            "\1\u0093",
+            "\1\u0094",
+            "\1\u0095",
+            "\1\u0096",
+            "\1\u0097",
+            "\1\u0098",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099\6\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
+            "\1\74\34\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009f",
+            "\1\u00a0",
+            "",
+            "",
+            "",
+            "\1\u00a1",
+            "\1\u00a2\10\uffff\1\u00a3",
+            "\1\u00a4\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7\5\uffff\1\u00a8",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00aa",
+            "",
+            "\1\u00ab",
+            "\1\u00ac\3\uffff\1\u00ad",
+            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00c3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c7",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cc\2\uffff\1\u00cb",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d3\5\uffff\1\u00d2",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "",
+            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00f7",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0100",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u011a\26\uffff\1\u0119\32\uffff\1\u011b",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "",
+            "\1\u0121",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0123",
+            "",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "",
+            "",
+            "\1\u0127",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0129",
+            "\1\u012a",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "",
+            "\1\u012e",
+            "",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "",
+            "",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\3\74\1\u013e\3\74\1\u013a\4\74\1\u013c\3\74\1\u013b\1\74\1\u013f\3\74\1\u013d\1\74\1\u0139\1\74\4\uffff\1\74\1\uffff\22\74\1\u0138\7\74",
+            "\1\u0141",
+            "\1\u0142",
+            "",
+            "\1\u0143",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\u0148",
+            "",
+            "\1\u0149",
+            "",
+            "\1\u014a",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "",
+            "\1\u0150\16\uffff\1\u0151",
+            "\1\74\13\uffff\12\74\7\uffff\23\74\1\u0152\6\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u015c",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u015e",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "",
+            "\1\u0165",
+            "\1\u0166",
+            "\1\u0167\15\uffff\1\u0168",
+            "\1\u0169",
+            "\1\u016b\5\uffff\1\u016a",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "",
+            "",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\u0177",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0179",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0182",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\u0185",
+            "",
+            "\1\u0186",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0197",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\14\74\1\u0198\15\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u019a",
+            "\1\u019b",
+            "\1\u019c",
+            "",
+            "\1\u019d",
+            "",
+            "\1\u019e",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01a4",
+            "",
+            "\1\u01a5",
+            "",
+            "",
+            "\1\u01a6",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01b6",
+            "",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01ba",
+            "\1\u01bb",
+            "",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "",
+            "",
+            "",
+            "",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01cb",
+            "",
+            "\1\u01cc\13\uffff\1\u01cd",
+            "\1\74\13\uffff\12\74\7\uffff\24\74\1\u01ce\5\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01d1",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01da",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01dc",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\u01e3",
+            "",
+            "",
+            "\1\u01e4",
+            "",
+            "",
+            "\1\u01e5",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01e8",
+            "",
+            "",
+            "\1\u01e9",
+            "",
+            "\1\u01ea",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01ec",
+            "",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "",
+            "",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01fe",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | 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;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='p') ) {s = 1;}
+
+                        else if ( (LA21_0=='{') ) {s = 2;}
+
+                        else if ( (LA21_0=='}') ) {s = 3;}
+
+                        else if ( (LA21_0=='c') ) {s = 4;}
+
+                        else if ( (LA21_0=='d') ) {s = 5;}
+
+                        else if ( (LA21_0=='o') ) {s = 6;}
+
+                        else if ( (LA21_0==';') ) {s = 7;}
+
+                        else if ( (LA21_0=='t') ) {s = 8;}
+
+                        else if ( (LA21_0=='h') ) {s = 9;}
+
+                        else if ( (LA21_0=='a') ) {s = 10;}
+
+                        else if ( (LA21_0=='e') ) {s = 11;}
+
+                        else if ( (LA21_0=='k') ) {s = 12;}
+
+                        else if ( (LA21_0=='l') ) {s = 13;}
+
+                        else if ( (LA21_0=='u') ) {s = 14;}
+
+                        else if ( (LA21_0=='m') ) {s = 15;}
+
+                        else if ( (LA21_0=='n') ) {s = 16;}
+
+                        else if ( (LA21_0=='i') ) {s = 17;}
+
+                        else if ( (LA21_0=='.') ) {s = 18;}
+
+                        else if ( (LA21_0=='*') ) {s = 19;}
+
+                        else if ( (LA21_0=='@') ) {s = 20;}
+
+                        else if ( (LA21_0=='(') ) {s = 21;}
+
+                        else if ( (LA21_0==',') ) {s = 22;}
+
+                        else if ( (LA21_0==')') ) {s = 23;}
+
+                        else if ( (LA21_0=='=') ) {s = 24;}
+
+                        else if ( (LA21_0=='#') ) {s = 25;}
+
+                        else if ( (LA21_0=='[') ) {s = 26;}
+
+                        else if ( (LA21_0==']') ) {s = 27;}
+
+                        else if ( (LA21_0=='+') ) {s = 28;}
+
+                        else if ( (LA21_0=='-') ) {s = 29;}
+
+                        else if ( (LA21_0=='/') ) {s = 30;}
+
+                        else if ( (LA21_0=='%') ) {s = 31;}
+
+                        else if ( (LA21_0=='<') ) {s = 32;}
+
+                        else if ( (LA21_0=='>') ) {s = 33;}
+
+                        else if ( (LA21_0=='|') ) {s = 34;}
+
+                        else if ( (LA21_0=='&') ) {s = 35;}
+
+                        else if ( (LA21_0=='!') ) {s = 36;}
+
+                        else if ( (LA21_0=='?') ) {s = 37;}
+
+                        else if ( (LA21_0==':') ) {s = 38;}
+
+                        else if ( (LA21_0=='s') ) {s = 39;}
+
+                        else if ( (LA21_0=='f') ) {s = 40;}
+
+                        else if ( (LA21_0=='w') ) {s = 41;}
+
+                        else if ( (LA21_0=='v') ) {s = 42;}
+
+                        else if ( (LA21_0=='r') ) {s = 43;}
+
+                        else if ( (LA21_0=='S') ) {s = 44;}
+
+                        else if ( (LA21_0=='N') ) {s = 45;}
+
+                        else if ( (LA21_0=='I') ) {s = 46;}
+
+                        else if ( (LA21_0=='B') ) {s = 47;}
+
+                        else if ( (LA21_0=='D') ) {s = 48;}
+
+                        else if ( (LA21_0=='T') ) {s = 49;}
+
+                        else if ( (LA21_0=='0') ) {s = 50;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 51;}
+
+                        else if ( (LA21_0=='^') ) {s = 52;}
+
+                        else if ( (LA21_0=='$'||LA21_0=='A'||LA21_0=='C'||(LA21_0>='E' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='M')||(LA21_0>='O' && LA21_0<='R')||(LA21_0>='U' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||LA21_0=='j'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 53;}
+
+                        else if ( (LA21_0=='\"') ) {s = 54;}
+
+                        else if ( (LA21_0=='\'') ) {s = 55;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 56;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 57;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLParser.java
new file mode 100644
index 0000000..39332ff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLParser.java
@@ -0,0 +1,10015 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+@SuppressWarnings("all")
+public class InternalCubeDSLParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'cube'", "'defaultMeasure'", "'dimensionUsage'", "'over'", "';'", "'dimension'", "'typeTime'", "'hierarchy'", "'hasAll'", "'allMemberName='", "'defaultMember='", "'entity'", "'key='", "'level'", "'column='", "'uniqueMembers'", "'levelType='", "'property'", "'type='", "'measure'", "'notVisible'", "'import'", "'.'", "'*'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'sum'", "'count'", "'min'", "'max'", "'avg'", "'distinct-count'", "'String'", "'Numeric'", "'Integer'", "'Boolean'", "'Date'", "'Time'", "'Timestamp'", "'TimeYears'", "'TimeHalfYears'", "'TimeQuarters'", "'TimeMonths'", "'TimeWeeks'", "'TimeDays'", "'TimeHours'", "'TimeMinutes'", "'TimeSeconds'"
+    };
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    public static final int RULE_ID=4;
+    public static final int T__130=130;
+    public static final int RULE_INT=7;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    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;
+
+    // delegates
+    // delegators
+
+
+        public InternalCubeDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalCubeDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalCubeDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g"; }
+
+
+
+     	private CubeDSLGrammarAccess grammarAccess;
+     	
+        public InternalCubeDSLParser(TokenStream input, CubeDSLGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "CubeModel";	
+       	}
+       	
+       	@Override
+       	protected CubeDSLGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleCubeModel"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:68:1: entryRuleCubeModel returns [EObject current=null] : iv_ruleCubeModel= ruleCubeModel EOF ;
+    public final EObject entryRuleCubeModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:69:2: (iv_ruleCubeModel= ruleCubeModel EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:70:2: iv_ruleCubeModel= ruleCubeModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeModelRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeModel_in_entryRuleCubeModel75);
+            iv_ruleCubeModel=ruleCubeModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeModel; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeModel"
+
+
+    // $ANTLR start "ruleCubeModel"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:77:1: ruleCubeModel returns [EObject current=null] : ( () ( (lv_pckg_1_0= ruleCubePackage ) ) ) ;
+    public final EObject ruleCubeModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_pckg_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:80:28: ( ( () ( (lv_pckg_1_0= ruleCubePackage ) ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:1: ( () ( (lv_pckg_1_0= ruleCubePackage ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:1: ( () ( (lv_pckg_1_0= ruleCubePackage ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:2: () ( (lv_pckg_1_0= ruleCubePackage ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:2: ()
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:82:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getCubeModelAccess().getCubeModelAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:87:2: ( (lv_pckg_1_0= ruleCubePackage ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:1: (lv_pckg_1_0= ruleCubePackage )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:1: (lv_pckg_1_0= ruleCubePackage )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:89:3: lv_pckg_1_0= ruleCubePackage
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubePackage_in_ruleCubeModel140);
+            lv_pckg_1_0=ruleCubePackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeModelRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"pckg",
+                      		lv_pckg_1_0, 
+                      		"CubePackage");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeModel"
+
+
+    // $ANTLR start "entryRuleCubePackage"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:113:1: entryRuleCubePackage returns [EObject current=null] : iv_ruleCubePackage= ruleCubePackage EOF ;
+    public final EObject entryRuleCubePackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubePackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:114:2: (iv_ruleCubePackage= ruleCubePackage EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:115:2: iv_ruleCubePackage= ruleCubePackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubePackageRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubePackage_in_entryRuleCubePackage176);
+            iv_ruleCubePackage=ruleCubePackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubePackage; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubePackage186); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubePackage"
+
+
+    // $ANTLR start "ruleCubePackage"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:122:1: ruleCubePackage returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleCubePackage() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_imports_3_0 = null;
+
+        EObject lv_dimensions_4_0 = null;
+
+        EObject lv_cubes_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:125:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )?
+            {
+            otherlv_0=(Token)match(input,13,FOLLOW_13_in_ruleCubePackage223); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubePackageAccess().getPackageKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:130:1: ( (lv_name_1_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:131:1: (lv_name_1_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:131:1: (lv_name_1_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:132:3: lv_name_1_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleCubePackage244);
+            lv_name_1_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:148:2: (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==14) ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:148:4: otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}'
+                    {
+                    otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleCubePackage257); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:152:1: ( (lv_imports_3_0= ruleImport ) )*
+                    loop1:
+                    do {
+                        int alt1=2;
+                        int LA1_0 = input.LA(1);
+
+                        if ( (LA1_0==37) ) {
+                            alt1=1;
+                        }
+
+
+                        switch (alt1) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:153:1: (lv_imports_3_0= ruleImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:153:1: (lv_imports_3_0= ruleImport )
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:154:3: lv_imports_3_0= ruleImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getCubePackageAccess().getImportsImportParserRuleCall_2_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleImport_in_ruleCubePackage278);
+                    	    lv_imports_3_0=ruleImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_3_0, 
+                    	              		"Import");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop1;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:170:3: ( (lv_dimensions_4_0= ruleCubeDimension ) )*
+                    loop2:
+                    do {
+                        int alt2=2;
+                        int LA2_0 = input.LA(1);
+
+                        if ( (LA2_0==21) ) {
+                            alt2=1;
+                        }
+
+
+                        switch (alt2) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:171:1: (lv_dimensions_4_0= ruleCubeDimension )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:171:1: (lv_dimensions_4_0= ruleCubeDimension )
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:172:3: lv_dimensions_4_0= ruleCubeDimension
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleCubeDimension_in_ruleCubePackage300);
+                    	    lv_dimensions_4_0=ruleCubeDimension();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"dimensions",
+                    	              		lv_dimensions_4_0, 
+                    	              		"CubeDimension");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop2;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:188:3: ( (lv_cubes_5_0= ruleCubeType ) )*
+                    loop3:
+                    do {
+                        int alt3=2;
+                        int LA3_0 = input.LA(1);
+
+                        if ( (LA3_0==16) ) {
+                            alt3=1;
+                        }
+
+
+                        switch (alt3) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:189:1: (lv_cubes_5_0= ruleCubeType )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:189:1: (lv_cubes_5_0= ruleCubeType )
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:190:3: lv_cubes_5_0= ruleCubeType
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_3_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleCubeType_in_ruleCubePackage322);
+                    	    lv_cubes_5_0=ruleCubeType();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"cubes",
+                    	              		lv_cubes_5_0, 
+                    	              		"CubeType");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop3;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleCubePackage335); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubePackage"
+
+
+    // $ANTLR start "entryRuleCubeType"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:218:1: entryRuleCubeType returns [EObject current=null] : iv_ruleCubeType= ruleCubeType EOF ;
+    public final EObject entryRuleCubeType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:219:2: (iv_ruleCubeType= ruleCubeType EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:220:2: iv_ruleCubeType= ruleCubeType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeTypeRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeType_in_entryRuleCubeType373);
+            iv_ruleCubeType=ruleCubeType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeType; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeType383); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeType"
+
+
+    // $ANTLR start "ruleCubeType"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:227:1: ruleCubeType returns [EObject current=null] : (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' ) ;
+    public final EObject ruleCubeType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token lv_defaultMeasure_2_0=null;
+        Token lv_defaultMeasureValue_3_0=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_cubeTypeEntity_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:230:28: ( (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:231:1: (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:231:1: (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:231:3: otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleCubeType420); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubeTypeAccess().getCubeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:235:1: ( (lv_name_1_0= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:236:1: (lv_name_1_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:236:1: (lv_name_1_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:237:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCubeType437); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeTypeRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:253:2: ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==17) ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:253:3: ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:253:3: ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:254:1: (lv_defaultMeasure_2_0= 'defaultMeasure' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:254:1: (lv_defaultMeasure_2_0= 'defaultMeasure' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:255:3: lv_defaultMeasure_2_0= 'defaultMeasure'
+                    {
+                    lv_defaultMeasure_2_0=(Token)match(input,17,FOLLOW_17_in_ruleCubeType461); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_defaultMeasure_2_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "defaultMeasure", true, "defaultMeasure");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:268:2: ( (lv_defaultMeasureValue_3_0= RULE_STRING ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:269:1: (lv_defaultMeasureValue_3_0= RULE_STRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:269:1: (lv_defaultMeasureValue_3_0= RULE_STRING )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:270:3: lv_defaultMeasureValue_3_0= RULE_STRING
+                    {
+                    lv_defaultMeasureValue_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCubeType491); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			newLeafNode(lv_defaultMeasureValue_3_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); 
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeTypeRule());
+                      	        }
+                             		setWithLastConsumed(
+                             			current, 
+                             			"defaultMeasureValue",
+                              		lv_defaultMeasureValue_3_0, 
+                              		"STRING");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleCubeType510); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:290:1: ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:291:1: (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:291:1: (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:292:3: lv_cubeTypeEntity_5_0= ruleCubeTypeEntity
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubeTypeEntity_in_ruleCubeType531);
+            lv_cubeTypeEntity_5_0=ruleCubeTypeEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeTypeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"cubeTypeEntity",
+                      		lv_cubeTypeEntity_5_0, 
+                      		"CubeTypeEntity");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleCubeType543); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeType"
+
+
+    // $ANTLR start "entryRuleCubeDimensionUsage"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:320:1: entryRuleCubeDimensionUsage returns [EObject current=null] : iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF ;
+    public final EObject entryRuleCubeDimensionUsage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeDimensionUsage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:321:2: (iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:322:2: iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeDimensionUsageRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimensionUsage_in_entryRuleCubeDimensionUsage579);
+            iv_ruleCubeDimensionUsage=ruleCubeDimensionUsage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeDimensionUsage; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionUsage589); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeDimensionUsage"
+
+
+    // $ANTLR start "ruleCubeDimensionUsage"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:329:1: ruleCubeDimensionUsage returns [EObject current=null] : (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' ) ;
+    public final EObject ruleCubeDimensionUsage() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:332:28: ( (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:333:1: (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:333:1: (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:333:3: otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';'
+            {
+            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleCubeDimensionUsage626); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:337:1: ( (otherlv_1= RULE_ID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:338:1: (otherlv_1= RULE_ID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:338:1: (otherlv_1= RULE_ID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:339:3: otherlv_1= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+              	        }
+                      
+            }
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCubeDimensionUsage646); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_1, grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleCubeDimensionUsage658); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:354:1: ( ( ruleLFQN ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:355:1: ( ruleLFQN )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:355:1: ( ruleLFQN )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:356:3: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeDimensionUsage681);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,20,FOLLOW_20_in_ruleCubeDimensionUsage693); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getCubeDimensionUsageAccess().getSemicolonKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeDimensionUsage"
+
+
+    // $ANTLR start "entryRuleCubeDimension"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:381:1: entryRuleCubeDimension returns [EObject current=null] : iv_ruleCubeDimension= ruleCubeDimension EOF ;
+    public final EObject entryRuleCubeDimension() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeDimension = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:382:2: (iv_ruleCubeDimension= ruleCubeDimension EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:383:2: iv_ruleCubeDimension= ruleCubeDimension EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeDimensionRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimension_in_entryRuleCubeDimension729);
+            iv_ruleCubeDimension=ruleCubeDimension();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeDimension; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimension739); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeDimension"
+
+
+    // $ANTLR start "ruleCubeDimension"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:390:1: ruleCubeDimension returns [EObject current=null] : (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' ) ;
+    public final EObject ruleCubeDimension() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_typeTime_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_hierarchies_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:393:28: ( (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:394:1: (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:394:1: (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:394:3: otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}'
+            {
+            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleCubeDimension776); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:398:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:399:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:399:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:400:3: lv_name_1_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeDimension797);
+            lv_name_1_0=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"TRANSLATABLEID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:416:2: ( (lv_typeTime_2_0= 'typeTime' ) )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==22) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:417:1: (lv_typeTime_2_0= 'typeTime' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:417:1: (lv_typeTime_2_0= 'typeTime' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:418:3: lv_typeTime_2_0= 'typeTime'
+                    {
+                    lv_typeTime_2_0=(Token)match(input,22,FOLLOW_22_in_ruleCubeDimension815); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_typeTime_2_0, grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeDimensionRule());
+                      	        }
+                             		setWithLastConsumed(current, "typeTime", true, "typeTime");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleCubeDimension841); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:435:1: ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0==23) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:436:1: (lv_hierarchies_4_0= ruleCubeHierarchy )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:436:1: (lv_hierarchies_4_0= ruleCubeHierarchy )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:437:3: lv_hierarchies_4_0= ruleCubeHierarchy
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleCubeHierarchy_in_ruleCubeDimension862);
+            	    lv_hierarchies_4_0=ruleCubeHierarchy();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"hierarchies",
+            	              		lv_hierarchies_4_0, 
+            	              		"CubeHierarchy");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleCubeDimension875); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeDimension"
+
+
+    // $ANTLR start "entryRuleCubeHierarchy"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:465:1: entryRuleCubeHierarchy returns [EObject current=null] : iv_ruleCubeHierarchy= ruleCubeHierarchy EOF ;
+    public final EObject entryRuleCubeHierarchy() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeHierarchy = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:466:2: (iv_ruleCubeHierarchy= ruleCubeHierarchy EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:467:2: iv_ruleCubeHierarchy= ruleCubeHierarchy EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeHierarchyRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeHierarchy_in_entryRuleCubeHierarchy911);
+            iv_ruleCubeHierarchy=ruleCubeHierarchy();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeHierarchy; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeHierarchy921); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeHierarchy"
+
+
+    // $ANTLR start "ruleCubeHierarchy"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:474:1: ruleCubeHierarchy returns [EObject current=null] : ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' ) ;
+    public final EObject ruleCubeHierarchy() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_hasAll_3_0=null;
+        Token lv_allMemberName_4_0=null;
+        Token lv_defaultMember_6_0=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        AntlrDatatypeRuleToken lv_name_2_0 = null;
+
+        AntlrDatatypeRuleToken lv_allMemberNameValue_5_0 = null;
+
+        AntlrDatatypeRuleToken lv_defaultMemberValue_7_0 = null;
+
+        EObject lv_cubeDimEntity_9_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:477:28: ( ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:1: ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:1: ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:2: () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}'
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:2: ()
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:479:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleCubeHierarchy967); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:488:1: ( (lv_name_2_0= ruleTRANSLATABLEID ) )?
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==RULE_ID) ) {
+                alt8=1;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:489:1: (lv_name_2_0= ruleTRANSLATABLEID )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:489:1: (lv_name_2_0= ruleTRANSLATABLEID )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:490:3: lv_name_2_0= ruleTRANSLATABLEID
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeHierarchy988);
+                    lv_name_2_0=ruleTRANSLATABLEID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_2_0, 
+                              		"TRANSLATABLEID");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:506:3: ( (lv_hasAll_3_0= 'hasAll' ) )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==24) ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:507:1: (lv_hasAll_3_0= 'hasAll' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:507:1: (lv_hasAll_3_0= 'hasAll' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:508:3: lv_hasAll_3_0= 'hasAll'
+                    {
+                    lv_hasAll_3_0=(Token)match(input,24,FOLLOW_24_in_ruleCubeHierarchy1007); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_hasAll_3_0, grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeHierarchyRule());
+                      	        }
+                             		setWithLastConsumed(current, "hasAll", true, "hasAll");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:521:3: ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==25) ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:521:4: ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:521:4: ( (lv_allMemberName_4_0= 'allMemberName=' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:522:1: (lv_allMemberName_4_0= 'allMemberName=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:522:1: (lv_allMemberName_4_0= 'allMemberName=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:523:3: lv_allMemberName_4_0= 'allMemberName='
+                    {
+                    lv_allMemberName_4_0=(Token)match(input,25,FOLLOW_25_in_ruleCubeHierarchy1040); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_allMemberName_4_0, grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeHierarchyRule());
+                      	        }
+                             		setWithLastConsumed(current, "allMemberName", true, "allMemberName=");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:536:2: ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:537:1: (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:537:1: (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:538:3: lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleCubeHierarchy1074);
+                    lv_allMemberNameValue_5_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"allMemberNameValue",
+                              		lv_allMemberNameValue_5_0, 
+                              		"TRANSLATABLESTRING");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:554:4: ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )?
+            int alt11=2;
+            int LA11_0 = input.LA(1);
+
+            if ( (LA11_0==26) ) {
+                alt11=1;
+            }
+            switch (alt11) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:554:5: ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:554:5: ( (lv_defaultMember_6_0= 'defaultMember=' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:555:1: (lv_defaultMember_6_0= 'defaultMember=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:555:1: (lv_defaultMember_6_0= 'defaultMember=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:556:3: lv_defaultMember_6_0= 'defaultMember='
+                    {
+                    lv_defaultMember_6_0=(Token)match(input,26,FOLLOW_26_in_ruleCubeHierarchy1095); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_defaultMember_6_0, grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeHierarchyRule());
+                      	        }
+                             		setWithLastConsumed(current, "defaultMember", true, "defaultMember=");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:569:2: ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:570:1: (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:570:1: (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:571:3: lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleCubeHierarchy1129);
+                    lv_defaultMemberValue_7_0=ruleTRANSLATABLESTRING();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"defaultMemberValue",
+                              		lv_defaultMemberValue_7_0, 
+                              		"TRANSLATABLESTRING");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_8=(Token)match(input,14,FOLLOW_14_in_ruleCubeHierarchy1143); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_8, grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:591:1: ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:592:1: (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:592:1: (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:593:3: lv_cubeDimEntity_9_0= ruleCubeDimensionEntity
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubeDimensionEntity_in_ruleCubeHierarchy1164);
+            lv_cubeDimEntity_9_0=ruleCubeDimensionEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"cubeDimEntity",
+                      		lv_cubeDimEntity_9_0, 
+                      		"CubeDimensionEntity");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_10=(Token)match(input,15,FOLLOW_15_in_ruleCubeHierarchy1176); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_10, grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeHierarchy"
+
+
+    // $ANTLR start "entryRuleCubeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:621:1: entryRuleCubeEntity returns [EObject current=null] : iv_ruleCubeEntity= ruleCubeEntity EOF ;
+    public final EObject entryRuleCubeEntity() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeEntity = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:622:2: (iv_ruleCubeEntity= ruleCubeEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:623:2: iv_ruleCubeEntity= ruleCubeEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeEntity_in_entryRuleCubeEntity1212);
+            iv_ruleCubeEntity=ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeEntity; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeEntity1222); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeEntity"
+
+
+    // $ANTLR start "ruleCubeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:630:1: ruleCubeEntity returns [EObject current=null] : (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? ) ;
+    public final EObject ruleCubeEntity() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_key_2_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:633:28: ( (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:634:1: (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:634:1: (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:634:3: otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )?
+            {
+            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleCubeEntity1259); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubeEntityAccess().getEntityKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:638:1: ( ( ruleLFQN ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:639:1: ( ruleLFQN )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:639:1: ( ruleLFQN )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:640:3: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeEntityRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeEntity1282);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:653:2: ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==28) ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:653:3: ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:653:3: ( (lv_key_2_0= 'key=' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:654:1: (lv_key_2_0= 'key=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:654:1: (lv_key_2_0= 'key=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:655:3: lv_key_2_0= 'key='
+                    {
+                    lv_key_2_0=(Token)match(input,28,FOLLOW_28_in_ruleCubeEntity1301); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_key_2_0, grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeEntityRule());
+                      	        }
+                             		setWithLastConsumed(current, "key", true, "key=");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:668:2: ( ( ruleLFQN ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:669:1: ( ruleLFQN )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:669:1: ( ruleLFQN )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:670:3: ruleLFQN
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeEntityRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleLFQN_in_ruleCubeEntity1337);
+                    ruleLFQN();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeEntity"
+
+
+    // $ANTLR start "entryRuleCubeTypeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:691:1: entryRuleCubeTypeEntity returns [EObject current=null] : iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF ;
+    public final EObject entryRuleCubeTypeEntity() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeTypeEntity = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:692:2: (iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:693:2: iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeTypeEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeTypeEntity_in_entryRuleCubeTypeEntity1375);
+            iv_ruleCubeTypeEntity=ruleCubeTypeEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeTypeEntity; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeTypeEntity1385); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeTypeEntity"
+
+
+    // $ANTLR start "ruleCubeTypeEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:700:1: ruleCubeTypeEntity returns [EObject current=null] : ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' ) ;
+    public final EObject ruleCubeTypeEntity() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_4=null;
+        EObject lv_entityRef_0_0 = null;
+
+        EObject lv_dimensionUsages_2_0 = null;
+
+        EObject lv_measures_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:703:28: ( ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:1: ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:1: ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:2: ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}'
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:2: ( (lv_entityRef_0_0= ruleCubeEntity ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:705:1: (lv_entityRef_0_0= ruleCubeEntity )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:705:1: (lv_entityRef_0_0= ruleCubeEntity )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:706:3: lv_entityRef_0_0= ruleCubeEntity
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubeEntity_in_ruleCubeTypeEntity1431);
+            lv_entityRef_0_0=ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"entityRef",
+                      		lv_entityRef_0_0, 
+                      		"CubeEntity");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleCubeTypeEntity1443); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:726:1: ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )*
+            loop13:
+            do {
+                int alt13=2;
+                int LA13_0 = input.LA(1);
+
+                if ( (LA13_0==18) ) {
+                    alt13=1;
+                }
+
+
+                switch (alt13) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:727:1: (lv_dimensionUsages_2_0= ruleCubeDimensionUsage )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:727:1: (lv_dimensionUsages_2_0= ruleCubeDimensionUsage )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:728:3: lv_dimensionUsages_2_0= ruleCubeDimensionUsage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleCubeDimensionUsage_in_ruleCubeTypeEntity1464);
+            	    lv_dimensionUsages_2_0=ruleCubeDimensionUsage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"dimensionUsages",
+            	              		lv_dimensionUsages_2_0, 
+            	              		"CubeDimensionUsage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop13;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:744:3: ( (lv_measures_3_0= ruleCubeMeasure ) )*
+            loop14:
+            do {
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+
+                if ( (LA14_0==35) ) {
+                    alt14=1;
+                }
+
+
+                switch (alt14) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:745:1: (lv_measures_3_0= ruleCubeMeasure )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:745:1: (lv_measures_3_0= ruleCubeMeasure )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:746:3: lv_measures_3_0= ruleCubeMeasure
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleCubeMeasure_in_ruleCubeTypeEntity1486);
+            	    lv_measures_3_0=ruleCubeMeasure();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"measures",
+            	              		lv_measures_3_0, 
+            	              		"CubeMeasure");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop14;
+                }
+            } while (true);
+
+            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleCubeTypeEntity1499); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeTypeEntity"
+
+
+    // $ANTLR start "entryRuleCubeDimensionEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:774:1: entryRuleCubeDimensionEntity returns [EObject current=null] : iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF ;
+    public final EObject entryRuleCubeDimensionEntity() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeDimensionEntity = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:775:2: (iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:776:2: iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeDimensionEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimensionEntity_in_entryRuleCubeDimensionEntity1535);
+            iv_ruleCubeDimensionEntity=ruleCubeDimensionEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeDimensionEntity; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionEntity1545); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeDimensionEntity"
+
+
+    // $ANTLR start "ruleCubeDimensionEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:783:1: ruleCubeDimensionEntity returns [EObject current=null] : ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' ) ;
+    public final EObject ruleCubeDimensionEntity() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        EObject lv_entityRef_1_0 = null;
+
+        EObject lv_hierarchLevels_3_0 = null;
+
+        EObject lv_dimEntity_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:786:28: ( ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:2: () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}'
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:2: ()
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:788:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:793:2: ( (lv_entityRef_1_0= ruleCubeEntity ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:794:1: (lv_entityRef_1_0= ruleCubeEntity )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:794:1: (lv_entityRef_1_0= ruleCubeEntity )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:795:3: lv_entityRef_1_0= ruleCubeEntity
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubeEntity_in_ruleCubeDimensionEntity1600);
+            lv_entityRef_1_0=ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"entityRef",
+                      		lv_entityRef_1_0, 
+                      		"CubeEntity");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleCubeDimensionEntity1612); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:815:1: ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )*
+            loop15:
+            do {
+                int alt15=2;
+                int LA15_0 = input.LA(1);
+
+                if ( (LA15_0==29) ) {
+                    alt15=1;
+                }
+
+
+                switch (alt15) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:816:1: (lv_hierarchLevels_3_0= ruleCubeLevel )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:816:1: (lv_hierarchLevels_3_0= ruleCubeLevel )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:817:3: lv_hierarchLevels_3_0= ruleCubeLevel
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleCubeLevel_in_ruleCubeDimensionEntity1633);
+            	    lv_hierarchLevels_3_0=ruleCubeLevel();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"hierarchLevels",
+            	              		lv_hierarchLevels_3_0, 
+            	              		"CubeLevel");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop15;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:833:3: ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==27) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:834:1: (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:834:1: (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:835:3: lv_dimEntity_4_0= ruleCubeDimensionEntityEntity
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleCubeDimensionEntityEntity_in_ruleCubeDimensionEntity1655);
+                    lv_dimEntity_4_0=ruleCubeDimensionEntityEntity();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"dimEntity",
+                              		lv_dimEntity_4_0, 
+                              		"CubeDimensionEntityEntity");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleCubeDimensionEntity1668); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeDimensionEntity"
+
+
+    // $ANTLR start "entryRuleCubeDimensionEntityEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:863:1: entryRuleCubeDimensionEntityEntity returns [EObject current=null] : iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF ;
+    public final EObject entryRuleCubeDimensionEntityEntity() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeDimensionEntityEntity = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:864:2: (iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:865:2: iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeDimensionEntityEntityRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeDimensionEntityEntity_in_entryRuleCubeDimensionEntityEntity1704);
+            iv_ruleCubeDimensionEntityEntity=ruleCubeDimensionEntityEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeDimensionEntityEntity; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionEntityEntity1714); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeDimensionEntityEntity"
+
+
+    // $ANTLR start "ruleCubeDimensionEntityEntity"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:872:1: ruleCubeDimensionEntityEntity returns [EObject current=null] : ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' ) ;
+    public final EObject ruleCubeDimensionEntityEntity() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_8=null;
+        EObject lv_entityRef_1_0 = null;
+
+        EObject lv_hierarchLevels_6_0 = null;
+
+        EObject lv_dimEntity_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:875:28: ( ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:2: () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}'
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:2: ()
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:877:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:882:2: ( (lv_entityRef_1_0= ruleCubeEntity ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:883:1: (lv_entityRef_1_0= ruleCubeEntity )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:883:1: (lv_entityRef_1_0= ruleCubeEntity )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:884:3: lv_entityRef_1_0= ruleCubeEntity
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubeEntity_in_ruleCubeDimensionEntityEntity1769);
+            lv_entityRef_1_0=ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"entityRef",
+                      		lv_entityRef_1_0, 
+                      		"CubeEntity");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleCubeDimensionEntityEntity1781); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleCubeDimensionEntityEntity1793); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:908:1: ( ( ruleLFQN ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:909:1: ( ruleLFQN )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:909:1: ( ruleLFQN )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:910:3: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeDimensionEntityEntityRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeDimensionEntityEntity1816);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,20,FOLLOW_20_in_ruleCubeDimensionEntityEntity1828); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityEntityAccess().getSemicolonKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:927:1: ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )*
+            loop17:
+            do {
+                int alt17=2;
+                int LA17_0 = input.LA(1);
+
+                if ( (LA17_0==29) ) {
+                    alt17=1;
+                }
+
+
+                switch (alt17) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:928:1: (lv_hierarchLevels_6_0= ruleCubeLevel )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:928:1: (lv_hierarchLevels_6_0= ruleCubeLevel )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:929:3: lv_hierarchLevels_6_0= ruleCubeLevel
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_6_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleCubeLevel_in_ruleCubeDimensionEntityEntity1849);
+            	    lv_hierarchLevels_6_0=ruleCubeLevel();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"hierarchLevels",
+            	              		lv_hierarchLevels_6_0, 
+            	              		"CubeLevel");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop17;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:945:3: ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )?
+            int alt18=2;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==27) ) {
+                alt18=1;
+            }
+            switch (alt18) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:946:1: (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:946:1: (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:947:3: lv_dimEntity_7_0= ruleCubeDimensionEntityEntity
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_7_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleCubeDimensionEntityEntity_in_ruleCubeDimensionEntityEntity1871);
+                    lv_dimEntity_7_0=ruleCubeDimensionEntityEntity();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"dimEntity",
+                              		lv_dimEntity_7_0, 
+                              		"CubeDimensionEntityEntity");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleCubeDimensionEntityEntity1884); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_8, grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_8());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeDimensionEntityEntity"
+
+
+    // $ANTLR start "entryRuleCubeLevel"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:975:1: entryRuleCubeLevel returns [EObject current=null] : iv_ruleCubeLevel= ruleCubeLevel EOF ;
+    public final EObject entryRuleCubeLevel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeLevel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:976:2: (iv_ruleCubeLevel= ruleCubeLevel EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:977:2: iv_ruleCubeLevel= ruleCubeLevel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeLevelRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeLevel_in_entryRuleCubeLevel1920);
+            iv_ruleCubeLevel=ruleCubeLevel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeLevel; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeLevel1930); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeLevel"
+
+
+    // $ANTLR start "ruleCubeLevel"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:984:1: ruleCubeLevel returns [EObject current=null] : (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) ) ;
+    public final EObject ruleCubeLevel() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_uniqueMembers_4_0=null;
+        Token lv_levelType_5_0=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        Enumerator lv_levelTypeValue_6_0 = null;
+
+        EObject lv_properties_9_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:987:28: ( (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:988:1: (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:988:1: (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:988:3: otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) )
+            {
+            otherlv_0=(Token)match(input,29,FOLLOW_29_in_ruleCubeLevel1967); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubeLevelAccess().getLevelKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:992:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:993:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:993:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:994:3: lv_name_1_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeLevel1988);
+            lv_name_1_0=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"TRANSLATABLEID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleCubeLevel2000); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getCubeLevelAccess().getColumnKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1014:1: ( ( ruleLFQN ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1015:1: ( ruleLFQN )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1015:1: ( ruleLFQN )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1016:3: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeLevelRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeLevel2023);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1029:2: ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==31) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1030:1: (lv_uniqueMembers_4_0= 'uniqueMembers' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1030:1: (lv_uniqueMembers_4_0= 'uniqueMembers' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1031:3: lv_uniqueMembers_4_0= 'uniqueMembers'
+                    {
+                    lv_uniqueMembers_4_0=(Token)match(input,31,FOLLOW_31_in_ruleCubeLevel2041); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_uniqueMembers_4_0, grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeLevelRule());
+                      	        }
+                             		setWithLastConsumed(current, "uniqueMembers", true, "uniqueMembers");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1044:3: ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )?
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==32) ) {
+                alt20=1;
+            }
+            switch (alt20) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1044:4: ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1044:4: ( (lv_levelType_5_0= 'levelType=' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1045:1: (lv_levelType_5_0= 'levelType=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1045:1: (lv_levelType_5_0= 'levelType=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1046:3: lv_levelType_5_0= 'levelType='
+                    {
+                    lv_levelType_5_0=(Token)match(input,32,FOLLOW_32_in_ruleCubeLevel2074); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_levelType_5_0, grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeLevelRule());
+                      	        }
+                             		setWithLastConsumed(current, "levelType", true, "levelType=");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1059:2: ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1060:1: (lv_levelTypeValue_6_0= ruleCubeLevelLevelType )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1060:1: (lv_levelTypeValue_6_0= ruleCubeLevelLevelType )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1061:3: lv_levelTypeValue_6_0= ruleCubeLevelLevelType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleCubeLevelLevelType_in_ruleCubeLevel2108);
+                    lv_levelTypeValue_6_0=ruleCubeLevelLevelType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"levelTypeValue",
+                              		lv_levelTypeValue_6_0, 
+                              		"CubeLevelLevelType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1077:4: (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) )
+            int alt22=2;
+            int LA22_0 = input.LA(1);
+
+            if ( (LA22_0==20) ) {
+                alt22=1;
+            }
+            else if ( (LA22_0==14) ) {
+                alt22=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 22, 0, input);
+
+                throw nvae;
+            }
+            switch (alt22) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1077:6: otherlv_7= ';'
+                    {
+                    otherlv_7=(Token)match(input,20,FOLLOW_20_in_ruleCubeLevel2123); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_7, grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0());
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1082:6: (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1082:6: (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1082:8: otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}'
+                    {
+                    otherlv_8=(Token)match(input,14,FOLLOW_14_in_ruleCubeLevel2142); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_8, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1086:1: ( (lv_properties_9_0= ruleCubeLevelProp ) )*
+                    loop21:
+                    do {
+                        int alt21=2;
+                        int LA21_0 = input.LA(1);
+
+                        if ( (LA21_0==33) ) {
+                            alt21=1;
+                        }
+
+
+                        switch (alt21) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1087:1: (lv_properties_9_0= ruleCubeLevelProp )
+                    	    {
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1087:1: (lv_properties_9_0= ruleCubeLevelProp )
+                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1088:3: lv_properties_9_0= ruleCubeLevelProp
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FOLLOW_ruleCubeLevelProp_in_ruleCubeLevel2163);
+                    	    lv_properties_9_0=ruleCubeLevelProp();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"properties",
+                    	              		lv_properties_9_0, 
+                    	              		"CubeLevelProp");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop21;
+                        }
+                    } while (true);
+
+                    otherlv_10=(Token)match(input,15,FOLLOW_15_in_ruleCubeLevel2176); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_10, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeLevel"
+
+
+    // $ANTLR start "entryRuleCubeLevelProp"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1116:1: entryRuleCubeLevelProp returns [EObject current=null] : iv_ruleCubeLevelProp= ruleCubeLevelProp EOF ;
+    public final EObject entryRuleCubeLevelProp() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeLevelProp = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1117:2: (iv_ruleCubeLevelProp= ruleCubeLevelProp EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1118:2: iv_ruleCubeLevelProp= ruleCubeLevelProp EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeLevelPropRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeLevelProp_in_entryRuleCubeLevelProp2214);
+            iv_ruleCubeLevelProp=ruleCubeLevelProp();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeLevelProp; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeLevelProp2224); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeLevelProp"
+
+
+    // $ANTLR start "ruleCubeLevelProp"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1125:1: ruleCubeLevelProp returns [EObject current=null] : (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' ) ;
+    public final EObject ruleCubeLevelProp() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_type_4_0=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        Enumerator lv_typeValue_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1128:28: ( (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1129:1: (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1129:1: (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1129:3: otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';'
+            {
+            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleCubeLevelProp2261); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1133:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1134:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1134:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1135:3: lv_name_1_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeLevelProp2282);
+            lv_name_1_0=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"TRANSLATABLEID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleCubeLevelProp2294); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1155:1: ( ( ruleLFQN ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1156:1: ( ruleLFQN )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1156:1: ( ruleLFQN )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1157:3: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeLevelPropRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeLevelProp2317);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1170:2: ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==34) ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1170:3: ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1170:3: ( (lv_type_4_0= 'type=' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1171:1: (lv_type_4_0= 'type=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1171:1: (lv_type_4_0= 'type=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1172:3: lv_type_4_0= 'type='
+                    {
+                    lv_type_4_0=(Token)match(input,34,FOLLOW_34_in_ruleCubeLevelProp2336); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_type_4_0, grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeLevelPropRule());
+                      	        }
+                             		setWithLastConsumed(current, "type", true, "type=");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1185:2: ( (lv_typeValue_5_0= ruleCubeLevelPropType ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1186:1: (lv_typeValue_5_0= ruleCubeLevelPropType )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1186:1: (lv_typeValue_5_0= ruleCubeLevelPropType )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1187:3: lv_typeValue_5_0= ruleCubeLevelPropType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleCubeLevelPropType_in_ruleCubeLevelProp2370);
+                    lv_typeValue_5_0=ruleCubeLevelPropType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"typeValue",
+                              		lv_typeValue_5_0, 
+                              		"CubeLevelPropType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,20,FOLLOW_20_in_ruleCubeLevelProp2384); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getCubeLevelPropAccess().getSemicolonKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeLevelProp"
+
+
+    // $ANTLR start "entryRuleCubeMeasure"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1215:1: entryRuleCubeMeasure returns [EObject current=null] : iv_ruleCubeMeasure= ruleCubeMeasure EOF ;
+    public final EObject entryRuleCubeMeasure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCubeMeasure = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1216:2: (iv_ruleCubeMeasure= ruleCubeMeasure EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1217:2: iv_ruleCubeMeasure= ruleCubeMeasure EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeMeasureRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeMeasure_in_entryRuleCubeMeasure2420);
+            iv_ruleCubeMeasure=ruleCubeMeasure();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeMeasure; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeMeasure2430); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeMeasure"
+
+
+    // $ANTLR start "ruleCubeMeasure"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1224:1: ruleCubeMeasure returns [EObject current=null] : (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' ) ;
+    public final EObject ruleCubeMeasure() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_3=null;
+        Token lv_notVisible_5_0=null;
+        Token otherlv_6=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        Enumerator lv_aggregator_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1227:28: ( (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1228:1: (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1228:1: (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1228:3: otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';'
+            {
+            otherlv_0=(Token)match(input,35,FOLLOW_35_in_ruleCubeMeasure2467); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1232:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1233:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1233:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1234:3: lv_name_1_0= ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeMeasure2488);
+            lv_name_1_0=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"TRANSLATABLEID");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1250:2: ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1251:1: (lv_aggregator_2_0= ruleCubeAggregatorEnum )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1251:1: (lv_aggregator_2_0= ruleCubeAggregatorEnum )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1252:3: lv_aggregator_2_0= ruleCubeAggregatorEnum
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubeAggregatorEnum_in_ruleCubeMeasure2509);
+            lv_aggregator_2_0=ruleCubeAggregatorEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"aggregator",
+                      		lv_aggregator_2_0, 
+                      		"CubeAggregatorEnum");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,30,FOLLOW_30_in_ruleCubeMeasure2521); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getCubeMeasureAccess().getColumnKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1272:1: ( ( ruleLFQN ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1273:1: ( ruleLFQN )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1273:1: ( ruleLFQN )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1274:3: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getCubeMeasureRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeMeasure2544);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1287:2: ( (lv_notVisible_5_0= 'notVisible' ) )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( (LA24_0==36) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1288:1: (lv_notVisible_5_0= 'notVisible' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1288:1: (lv_notVisible_5_0= 'notVisible' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1289:3: lv_notVisible_5_0= 'notVisible'
+                    {
+                    lv_notVisible_5_0=(Token)match(input,36,FOLLOW_36_in_ruleCubeMeasure2562); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_notVisible_5_0, grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getCubeMeasureRule());
+                      	        }
+                             		setWithLastConsumed(current, "notVisible", true, "notVisible");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,20,FOLLOW_20_in_ruleCubeMeasure2588); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getCubeMeasureAccess().getSemicolonKeyword_6());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeMeasure"
+
+
+    // $ANTLR start "entryRuleImport"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1314:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
+    public final EObject entryRuleImport() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleImport = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1315:2: (iv_ruleImport= ruleImport EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1316:2: iv_ruleImport= ruleImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getImportRule()); 
+            }
+            pushFollow(FOLLOW_ruleImport_in_entryRuleImport2624);
+            iv_ruleImport=ruleImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleImport; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleImport2634); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleImport"
+
+
+    // $ANTLR start "ruleImport"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1323:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' ) ;
+    public final EObject ruleImport() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1326:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1327:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1327:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1327:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';'
+            {
+            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleImport2671); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1331:1: ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1332:1: (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1332:1: (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1333:3: lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleCubeQualifiedNameWithWildCard_in_ruleImport2692);
+            lv_importedNamespace_1_0=ruleCubeQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getImportRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"importedNamespace",
+                      		lv_importedNamespace_1_0, 
+                      		"CubeQualifiedNameWithWildCard");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,20,FOLLOW_20_in_ruleImport2704); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleImport"
+
+
+    // $ANTLR start "entryRuleCubeQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1361:1: entryRuleCubeQualifiedNameWithWildCard returns [String current=null] : iv_ruleCubeQualifiedNameWithWildCard= ruleCubeQualifiedNameWithWildCard EOF ;
+    public final String entryRuleCubeQualifiedNameWithWildCard() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleCubeQualifiedNameWithWildCard = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1362:2: (iv_ruleCubeQualifiedNameWithWildCard= ruleCubeQualifiedNameWithWildCard EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1363:2: iv_ruleCubeQualifiedNameWithWildCard= ruleCubeQualifiedNameWithWildCard EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardRule()); 
+            }
+            pushFollow(FOLLOW_ruleCubeQualifiedNameWithWildCard_in_entryRuleCubeQualifiedNameWithWildCard2741);
+            iv_ruleCubeQualifiedNameWithWildCard=ruleCubeQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCubeQualifiedNameWithWildCard.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeQualifiedNameWithWildCard2752); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCubeQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "ruleCubeQualifiedNameWithWildCard"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1370:1: ruleCubeQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
+    public final AntlrDatatypeRuleToken ruleCubeQualifiedNameWithWildCard() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_QualifiedName_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1373:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1374:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1374:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1375:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleCubeQualifiedNameWithWildCard2799);
+            this_QualifiedName_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_QualifiedName_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1385:1: (kw= '.' kw= '*' )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==38) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1386:2: kw= '.' kw= '*'
+                    {
+                    kw=(Token)match(input,38,FOLLOW_38_in_ruleCubeQualifiedNameWithWildCard2818); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+                          
+                    }
+                    kw=(Token)match(input,39,FOLLOW_39_in_ruleCubeQualifiedNameWithWildCard2831); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeQualifiedNameWithWildCard"
+
+
+    // $ANTLR start "entryRuleQualifiedName"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1405:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    public final String entryRuleQualifiedName() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1406:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1407:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName2874);
+            iv_ruleQualifiedName=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleQualifiedName.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName2885); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleQualifiedName"
+
+
+    // $ANTLR start "ruleQualifiedName"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1414:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
+    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_ValidID_0 = null;
+
+        AntlrDatatypeRuleToken this_ValidID_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1417:28: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1418:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1418:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1419:5: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName2932);
+            this_ValidID_0=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ValidID_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:1: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            loop26:
+            do {
+                int alt26=2;
+                int LA26_0 = input.LA(1);
+
+                if ( (LA26_0==38) ) {
+                    int LA26_2 = input.LA(2);
+
+                    if ( (LA26_2==RULE_ID) ) {
+                        int LA26_3 = input.LA(3);
+
+                        if ( (synpred1_InternalCubeDSL()) ) {
+                            alt26=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt26) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:2: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:2: ( ( '.' )=>kw= '.' )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:3: ( '.' )=>kw= '.'
+            	    {
+            	    kw=(Token)match(input,38,FOLLOW_38_in_ruleQualifiedName2960); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              current.merge(kw);
+            	              newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+            	          
+            	    }
+
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+            	       
+            	              newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
+            	          
+            	    }
+            	    pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName2983);
+            	    this_ValidID_2=ruleValidID();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      		current.merge(this_ValidID_2);
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	              afterParserOrEnumRuleCall();
+            	          
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop26;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleValidID"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1456:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    public final String entryRuleValidID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleValidID = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1457:2: (iv_ruleValidID= ruleValidID EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1458:2: iv_ruleValidID= ruleValidID EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getValidIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID3031);
+            iv_ruleValidID=ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleValidID.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID3042); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleValidID"
+
+
+    // $ANTLR start "ruleValidID"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1465:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_ID_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1468:28: (this_ID_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1469:5: this_ID_0= RULE_ID
+            {
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID3081); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ID_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                  newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleValidID"
+
+
+    // $ANTLR start "entryRuleLFQN"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1484:1: entryRuleLFQN returns [String current=null] : iv_ruleLFQN= ruleLFQN EOF ;
+    public final String entryRuleLFQN() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleLFQN = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1485:2: (iv_ruleLFQN= ruleLFQN EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1486:2: iv_ruleLFQN= ruleLFQN EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getLFQNRule()); 
+            }
+            pushFollow(FOLLOW_ruleLFQN_in_entryRuleLFQN3126);
+            iv_ruleLFQN=ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleLFQN.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleLFQN3137); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLFQN"
+
+
+    // $ANTLR start "ruleLFQN"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1493:1: ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
+    public final AntlrDatatypeRuleToken ruleLFQN() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_ID_0=null;
+        Token kw=null;
+        Token this_ID_2=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1496:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1497:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1497:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1497:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
+            {
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLFQN3177); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ID_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                  newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1504:1: (kw= '.' this_ID_2= RULE_ID )*
+            loop27:
+            do {
+                int alt27=2;
+                int LA27_0 = input.LA(1);
+
+                if ( (LA27_0==38) ) {
+                    alt27=1;
+                }
+
+
+                switch (alt27) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1505:2: kw= '.' this_ID_2= RULE_ID
+            	    {
+            	    kw=(Token)match(input,38,FOLLOW_38_in_ruleLFQN3196); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	              current.merge(kw);
+            	              newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
+            	          
+            	    }
+            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLFQN3211); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      		current.merge(this_ID_2);
+            	          
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	          newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
+            	          
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop27;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLFQN"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1525:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    public final String entryRuleTRANSLATABLEID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleTRANSLATABLEID = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1526:2: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1527:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID3259);
+            iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTRANSLATABLEID.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID3270); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLEID"
+
+
+    // $ANTLR start "ruleTRANSLATABLEID"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1534:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_ID_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1537:28: (this_ID_0= RULE_ID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1538:5: this_ID_0= RULE_ID
+            {
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID3309); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_ID_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                  newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTRANSLATABLEID"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1553:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleTRANSLATABLESTRING = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1554:2: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1555:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
+            }
+            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING3354);
+            iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTRANSLATABLESTRING.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING3365); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "ruleTRANSLATABLESTRING"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1562:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    public final AntlrDatatypeRuleToken ruleTRANSLATABLESTRING() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_STRING_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1565:28: (this_STRING_0= RULE_STRING )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1566:5: this_STRING_0= RULE_STRING
+            {
+            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING3404); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(this_STRING_0);
+                  
+            }
+            if ( state.backtracking==0 ) {
+               
+                  newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTRANSLATABLESTRING"
+
+
+    // $ANTLR start "entryRuleXAnnotation"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1581:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    public final EObject entryRuleXAnnotation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1582:2: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1583:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation3448);
+            iv_ruleXAnnotation=ruleXAnnotation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation3458); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotation"
+
+
+    // $ANTLR start "ruleXAnnotation"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1590:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
+    public final EObject ruleXAnnotation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_8=null;
+        EObject lv_elementValuePairs_4_0 = null;
+
+        EObject lv_elementValuePairs_6_0 = null;
+
+        EObject lv_value_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1593:28: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594:1: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594:1: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594:2: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594:2: ()
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1595:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,40,FOLLOW_40_in_ruleXAnnotation3504); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1604:1: ( ( ruleQualifiedName ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1605:1: ( ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1605:1: ( ruleQualifiedName )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1606:3: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getXAnnotationRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleQualifiedName_in_ruleXAnnotation3527);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619:2: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+
+            if ( (LA30_0==41) && (synpred2_InternalCubeDSL())) {
+                alt30=1;
+            }
+            switch (alt30) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619:3: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619:3: ( ( '(' )=>otherlv_3= '(' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619:4: ( '(' )=>otherlv_3= '('
+                    {
+                    otherlv_3=(Token)match(input,41,FOLLOW_41_in_ruleXAnnotation3548); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt29=3;
+                    alt29 = dfa29.predict(input);
+                    switch (alt29) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:5: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1630:1: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1631:3: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation3592);
+                            lv_elementValuePairs_4_0=ruleXAnnotationElementValuePair();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"elementValuePairs",
+                                      		lv_elementValuePairs_4_0, 
+                                      		"XAnnotationElementValuePair");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1647:2: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            loop28:
+                            do {
+                                int alt28=2;
+                                int LA28_0 = input.LA(1);
+
+                                if ( (LA28_0==42) ) {
+                                    alt28=1;
+                                }
+
+
+                                switch (alt28) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1647:4: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    {
+                            	    otherlv_5=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotation3605); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1651:1: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1651:2: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1657:1: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1658:3: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation3646);
+                            	    lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elementValuePairs",
+                            	              		lv_elementValuePairs_6_0, 
+                            	              		"XAnnotationElementValuePair");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop28;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1675:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1675:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1676:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1676:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1677:3: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_ruleXAnnotation3676);
+                            lv_value_7_0=ruleXAnnotationElementValueOrCommaList();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"value",
+                                      		lv_value_7_0, 
+                                      		"XAnnotationElementValueOrCommaList");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_8=(Token)match(input,43,FOLLOW_43_in_ruleXAnnotation3690); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotation"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1705:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValuePair = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1706:2: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1707:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair3728);
+            iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValuePair; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair3738); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "ruleXAnnotationElementValuePair"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1714:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        EObject lv_value_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1717:28: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:3: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1723:5: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1723:6: ( ( ruleValidID ) ) otherlv_1= '='
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1723:6: ( ( ruleValidID ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1724:1: ( ruleValidID )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1724:1: ( ruleValidID )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1725:3: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleValidID_in_ruleXAnnotationElementValuePair3808);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,44,FOLLOW_44_in_ruleXAnnotationElementValuePair3820); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+                  
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1742:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1743:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1743:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1744:3: lv_value_2_0= ruleXAnnotationElementValue
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_ruleXAnnotationElementValuePair3843);
+            lv_value_2_0=ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValuePairRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"value",
+                      		lv_value_2_0, 
+                      		"XAnnotationElementValue");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1768:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValueOrCommaList = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1769:2: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1770:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList3879);
+            iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValueOrCommaList; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList3889); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1777:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
+    public final EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_9=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+        EObject this_XAnnotationOrExpression_7 = null;
+
+        EObject lv_elements_10_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1780:28: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            int alt35=2;
+            alt35 = dfa35.predict(input);
+            switch (alt35) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1784:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1784:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1784:6: ()
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1785:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,45,FOLLOW_45_in_ruleXAnnotationElementValueOrCommaList3954); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+                          
+                    }
+                    otherlv_2=(Token)match(input,46,FOLLOW_46_in_ruleXAnnotationElementValueOrCommaList3966); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1798:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt32=2;
+                    int LA32_0 = input.LA(1);
+
+                    if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_DECIMAL)||LA32_0==14||LA32_0==37||(LA32_0>=40 && LA32_0<=41)||(LA32_0>=45 && LA32_0<=46)||LA32_0==53||(LA32_0>=69 && LA32_0<=70)||LA32_0==74||LA32_0==81||LA32_0==83||(LA32_0>=87 && LA32_0<=89)||(LA32_0>=92 && LA32_0<=103)||LA32_0==105) ) {
+                        alt32=1;
+                    }
+                    switch (alt32) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1798:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1798:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1799:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1799:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1800:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3990);
+                            lv_elements_3_0=ruleXAnnotationOrExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"elements",
+                                      		lv_elements_3_0, 
+                                      		"XAnnotationOrExpression");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1816:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop31:
+                            do {
+                                int alt31=2;
+                                int LA31_0 = input.LA(1);
+
+                                if ( (LA31_0==42) ) {
+                                    alt31=1;
+                                }
+
+
+                                switch (alt31) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1816:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_4=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValueOrCommaList4003); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1820:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1821:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1821:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1822:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList4024);
+                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elements",
+                            	              		lv_elements_5_0, 
+                            	              		"XAnnotationOrExpression");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop31;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,47,FOLLOW_47_in_ruleXAnnotationElementValueOrCommaList4040); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1843:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1843:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1844:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList4070);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XAnnotationOrExpression_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1852:1: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt34=2;
+                    int LA34_0 = input.LA(1);
+
+                    if ( (LA34_0==42) ) {
+                        alt34=1;
+                    }
+                    switch (alt34) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1852:2: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1852:2: ()
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1853:5: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                                      current = forceCreateModelElementAndAdd(
+                                          grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+                                          current);
+                                  
+                            }
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1858:2: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt33=0;
+                            loop33:
+                            do {
+                                int alt33=2;
+                                int LA33_0 = input.LA(1);
+
+                                if ( (LA33_0==42) ) {
+                                    alt33=1;
+                                }
+
+
+                                switch (alt33) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1858:4: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValueOrCommaList4092); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1862:1: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1863:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1863:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1864:3: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList4113);
+                            	    lv_elements_10_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elements",
+                            	              		lv_elements_10_0, 
+                            	              		"XAnnotationOrExpression");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    if ( cnt33 >= 1 ) break loop33;
+                            	    if (state.backtracking>0) {state.failed=true; return current;}
+                                        EarlyExitException eee =
+                                            new EarlyExitException(33, input);
+                                        throw eee;
+                                }
+                                cnt33++;
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1888:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValue = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1889:2: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1890:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue4154);
+            iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValue; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue4164); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValue"
+
+
+    // $ANTLR start "ruleXAnnotationElementValue"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1897:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
+    public final EObject ruleXAnnotationElementValue() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+        EObject this_XAnnotationOrExpression_7 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1900:28: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt38=2;
+            alt38 = dfa38.predict(input);
+            switch (alt38) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1904:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1904:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1904:6: ()
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1905:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,45,FOLLOW_45_in_ruleXAnnotationElementValue4229); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+                          
+                    }
+                    otherlv_2=(Token)match(input,46,FOLLOW_46_in_ruleXAnnotationElementValue4241); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1918:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt37=2;
+                    int LA37_0 = input.LA(1);
+
+                    if ( ((LA37_0>=RULE_ID && LA37_0<=RULE_DECIMAL)||LA37_0==14||LA37_0==37||(LA37_0>=40 && LA37_0<=41)||(LA37_0>=45 && LA37_0<=46)||LA37_0==53||(LA37_0>=69 && LA37_0<=70)||LA37_0==74||LA37_0==81||LA37_0==83||(LA37_0>=87 && LA37_0<=89)||(LA37_0>=92 && LA37_0<=103)||LA37_0==105) ) {
+                        alt37=1;
+                    }
+                    switch (alt37) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1918:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1918:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1919:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1919:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1920:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue4265);
+                            lv_elements_3_0=ruleXAnnotationOrExpression();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"elements",
+                                      		lv_elements_3_0, 
+                                      		"XAnnotationOrExpression");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1936:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop36:
+                            do {
+                                int alt36=2;
+                                int LA36_0 = input.LA(1);
+
+                                if ( (LA36_0==42) ) {
+                                    alt36=1;
+                                }
+
+
+                                switch (alt36) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1936:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_4=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValue4278); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1940:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1941:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1941:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1942:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue4299);
+                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"elements",
+                            	              		lv_elements_5_0, 
+                            	              		"XAnnotationOrExpression");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop36;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,47,FOLLOW_47_in_ruleXAnnotationElementValue4315); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1964:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue4344);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XAnnotationOrExpression_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValue"
+
+
+    // $ANTLR start "entryRuleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1980:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationOrExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1981:2: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1982:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression4379);
+            iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationOrExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression4389); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationOrExpression"
+
+
+    // $ANTLR start "ruleXAnnotationOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1989:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAnnotation_0 = null;
+
+        EObject this_XExpression_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1992:28: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1993:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1993:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt39=2;
+            int LA39_0 = input.LA(1);
+
+            if ( (LA39_0==40) ) {
+                alt39=1;
+            }
+            else if ( ((LA39_0>=RULE_ID && LA39_0<=RULE_DECIMAL)||LA39_0==14||LA39_0==37||LA39_0==41||(LA39_0>=45 && LA39_0<=46)||LA39_0==53||(LA39_0>=69 && LA39_0<=70)||LA39_0==74||LA39_0==81||LA39_0==83||(LA39_0>=87 && LA39_0<=89)||(LA39_0>=92 && LA39_0<=103)||LA39_0==105) ) {
+                alt39=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 39, 0, input);
+
+                throw nvae;
+            }
+            switch (alt39) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1994:5: this_XAnnotation_0= ruleXAnnotation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression4436);
+                    this_XAnnotation_0=ruleXAnnotation();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XAnnotation_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2004:5: this_XExpression_1= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression4463);
+                    this_XExpression_1=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XExpression_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationOrExpression"
+
+
+    // $ANTLR start "entryRuleXExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2020:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    public final EObject entryRuleXExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2021:2: (iv_ruleXExpression= ruleXExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2022:2: iv_ruleXExpression= ruleXExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression4498);
+            iv_ruleXExpression=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression4508); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXExpression"
+
+
+    // $ANTLR start "ruleXExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2029:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    public final EObject ruleXExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAssignment_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2032:28: (this_XAssignment_0= ruleXAssignment )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2034:5: this_XAssignment_0= ruleXAssignment
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression4554);
+            this_XAssignment_0=ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAssignment_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXExpression"
+
+
+    // $ANTLR start "entryRuleXAssignment"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2050:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    public final EObject entryRuleXAssignment() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAssignment = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2051:2: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2052:2: iv_ruleXAssignment= ruleXAssignment EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAssignmentRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment4588);
+            iv_ruleXAssignment=ruleXAssignment();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAssignment; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment4598); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAssignment"
+
+
+    // $ANTLR start "ruleXAssignment"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2059:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    public final EObject ruleXAssignment() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_value_3_0 = null;
+
+        EObject this_XOrExpression_4 = null;
+
+        EObject lv_rightOperand_7_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2062:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt41=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA41_1 = input.LA(2);
+
+                if ( (LA41_1==EOF||(LA41_1>=RULE_ID && LA41_1<=RULE_DECIMAL)||(LA41_1>=14 && LA41_1<=15)||LA41_1==20||(LA41_1>=37 && LA41_1<=39)||(LA41_1>=41 && LA41_1<=43)||(LA41_1>=45 && LA41_1<=79)||(LA41_1>=81 && LA41_1<=106)) ) {
+                    alt41=2;
+                }
+                else if ( (LA41_1==44) ) {
+                    alt41=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 41, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 92:
+                {
+                int LA41_2 = input.LA(2);
+
+                if ( (LA41_2==EOF||(LA41_2>=RULE_ID && LA41_2<=RULE_DECIMAL)||(LA41_2>=14 && LA41_2<=15)||LA41_2==20||(LA41_2>=37 && LA41_2<=39)||(LA41_2>=41 && LA41_2<=43)||(LA41_2>=45 && LA41_2<=79)||(LA41_2>=81 && LA41_2<=106)) ) {
+                    alt41=2;
+                }
+                else if ( (LA41_2==44) ) {
+                    alt41=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 41, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 93:
+                {
+                int LA41_3 = input.LA(2);
+
+                if ( (LA41_3==EOF||(LA41_3>=RULE_ID && LA41_3<=RULE_DECIMAL)||(LA41_3>=14 && LA41_3<=15)||LA41_3==20||(LA41_3>=37 && LA41_3<=39)||(LA41_3>=41 && LA41_3<=43)||(LA41_3>=45 && LA41_3<=79)||(LA41_3>=81 && LA41_3<=106)) ) {
+                    alt41=2;
+                }
+                else if ( (LA41_3==44) ) {
+                    alt41=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 41, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 37:
+                {
+                int LA41_4 = input.LA(2);
+
+                if ( (LA41_4==EOF||(LA41_4>=RULE_ID && LA41_4<=RULE_DECIMAL)||(LA41_4>=14 && LA41_4<=15)||LA41_4==20||(LA41_4>=37 && LA41_4<=39)||(LA41_4>=41 && LA41_4<=43)||(LA41_4>=45 && LA41_4<=79)||(LA41_4>=81 && LA41_4<=106)) ) {
+                    alt41=2;
+                }
+                else if ( (LA41_4==44) ) {
+                    alt41=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 41, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 94:
+                {
+                int LA41_5 = input.LA(2);
+
+                if ( (LA41_5==EOF||(LA41_5>=RULE_ID && LA41_5<=RULE_DECIMAL)||(LA41_5>=14 && LA41_5<=15)||LA41_5==20||(LA41_5>=37 && LA41_5<=39)||(LA41_5>=41 && LA41_5<=43)||(LA41_5>=45 && LA41_5<=79)||(LA41_5>=81 && LA41_5<=106)) ) {
+                    alt41=2;
+                }
+                else if ( (LA41_5==44) ) {
+                    alt41=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 41, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_STRING:
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+            case 14:
+            case 41:
+            case 45:
+            case 46:
+            case 53:
+            case 69:
+            case 70:
+            case 74:
+            case 81:
+            case 83:
+            case 87:
+            case 88:
+            case 89:
+            case 95:
+            case 96:
+            case 97:
+            case 98:
+            case 99:
+            case 100:
+            case 101:
+            case 102:
+            case 103:
+            case 105:
+                {
+                alt41=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt41) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:3: ()
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2064:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2069:2: ( ( ruleFeatureCallID ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2070:1: ( ruleFeatureCallID )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2070:1: ( ruleFeatureCallID )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2071:3: ruleFeatureCallID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXAssignment4656);
+                    ruleFeatureCallID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment4672);
+                    ruleOpSingleAssign();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2092:1: ( (lv_value_3_0= ruleXAssignment ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2093:1: (lv_value_3_0= ruleXAssignment )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2093:1: (lv_value_3_0= ruleXAssignment )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2094:3: lv_value_3_0= ruleXAssignment
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4692);
+                    lv_value_3_0=ruleXAssignment();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"value",
+                              		lv_value_3_0, 
+                              		"XAssignment");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2111:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2111:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2112:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment4722);
+                    this_XOrExpression_4=ruleXOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XOrExpression_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt40=2;
+                    alt40 = dfa40.predict(input);
+                    switch (alt40) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2125:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2125:7: () ( ( ruleOpMultiAssign ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2125:7: ()
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2126:5: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                                      current = forceCreateModelElementAndSet(
+                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+                                          current);
+                                  
+                            }
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2131:2: ( ( ruleOpMultiAssign ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2132:1: ( ruleOpMultiAssign )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2132:1: ( ruleOpMultiAssign )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2133:3: ruleOpMultiAssign
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment4775);
+                            ruleOpMultiAssign();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2146:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2147:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2147:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2148:3: lv_rightOperand_7_0= ruleXAssignment
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
+                              	    
+                            }
+                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4798);
+                            lv_rightOperand_7_0=ruleXAssignment();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"rightOperand",
+                                      		lv_rightOperand_7_0, 
+                                      		"XAssignment");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAssignment"
+
+
+    // $ANTLR start "entryRuleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2172:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    public final String entryRuleOpSingleAssign() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpSingleAssign = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2173:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2174:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4838);
+            iv_ruleOpSingleAssign=ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpSingleAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign4849); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpSingleAssign"
+
+
+    // $ANTLR start "ruleOpSingleAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2181:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2184:28: (kw= '=' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2186:2: kw= '='
+            {
+            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpSingleAssign4886); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                      current.merge(kw);
+                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpSingleAssign"
+
+
+    // $ANTLR start "entryRuleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2199:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    public final String entryRuleOpMultiAssign() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMultiAssign = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2200:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2201:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4926);
+            iv_ruleOpMultiAssign=ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpMultiAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign4937); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpMultiAssign"
+
+
+    // $ANTLR start "ruleOpMultiAssign"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2208:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2211:28: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2212:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2212:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt43=7;
+            switch ( input.LA(1) ) {
+            case 48:
+                {
+                alt43=1;
+                }
+                break;
+            case 49:
+                {
+                alt43=2;
+                }
+                break;
+            case 50:
+                {
+                alt43=3;
+                }
+                break;
+            case 51:
+                {
+                alt43=4;
+                }
+                break;
+            case 52:
+                {
+                alt43=5;
+                }
+                break;
+            case 53:
+                {
+                alt43=6;
+                }
+                break;
+            case 54:
+                {
+                alt43=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt43) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2213:2: kw= '+='
+                    {
+                    kw=(Token)match(input,48,FOLLOW_48_in_ruleOpMultiAssign4975); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2220:2: kw= '-='
+                    {
+                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpMultiAssign4994); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2227:2: kw= '*='
+                    {
+                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpMultiAssign5013); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2234:2: kw= '/='
+                    {
+                    kw=(Token)match(input,51,FOLLOW_51_in_ruleOpMultiAssign5032); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2241:2: kw= '%='
+                    {
+                    kw=(Token)match(input,52,FOLLOW_52_in_ruleOpMultiAssign5051); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2247:6: (kw= '<' kw= '<' kw= '=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2247:6: (kw= '<' kw= '<' kw= '=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2248:2: kw= '<' kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpMultiAssign5071); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+                          
+                    }
+                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpMultiAssign5084); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+                          
+                    }
+                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpMultiAssign5097); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2266:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2266:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2267:2: kw= '>' (kw= '>' )? kw= '>='
+                    {
+                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpMultiAssign5118); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2272:1: (kw= '>' )?
+                    int alt42=2;
+                    int LA42_0 = input.LA(1);
+
+                    if ( (LA42_0==54) ) {
+                        alt42=1;
+                    }
+                    switch (alt42) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2273:2: kw= '>'
+                            {
+                            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpMultiAssign5132); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpMultiAssign5147); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpMultiAssign"
+
+
+    // $ANTLR start "entryRuleXOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2292:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    public final EObject entryRuleXOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOrExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2293:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2294:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXOrExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression5188);
+            iv_ruleXOrExpression=ruleXOrExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXOrExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression5198); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXOrExpression"
+
+
+    // $ANTLR start "ruleXOrExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2301:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    public final EObject ruleXOrExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAndExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2304:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2305:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2305:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2306:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression5245);
+            this_XAndExpression_0=ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAndExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop44:
+            do {
+                int alt44=2;
+                int LA44_0 = input.LA(1);
+
+                if ( (LA44_0==56) ) {
+                    int LA44_2 = input.LA(2);
+
+                    if ( (synpred9_InternalCubeDSL()) ) {
+                        alt44=1;
+                    }
+
+
+                }
+
+
+                switch (alt44) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2319:6: ( () ( ( ruleOpOr ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2319:7: () ( ( ruleOpOr ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2319:7: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2320:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2325:2: ( ( ruleOpOr ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2326:1: ( ruleOpOr )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2326:1: ( ruleOpOr )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2327:3: ruleOpOr
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXOrExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpOr_in_ruleXOrExpression5298);
+            	    ruleOpOr();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2340:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2341:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2341:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2342:3: lv_rightOperand_3_0= ruleXAndExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXAndExpression_in_ruleXOrExpression5321);
+            	    lv_rightOperand_3_0=ruleXAndExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XAndExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop44;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXOrExpression"
+
+
+    // $ANTLR start "entryRuleOpOr"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2366:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    public final String entryRuleOpOr() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpOr = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2367:2: (iv_ruleOpOr= ruleOpOr EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2368:2: iv_ruleOpOr= ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr5360);
+            iv_ruleOpOr=ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpOr.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr5371); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpOr"
+
+
+    // $ANTLR start "ruleOpOr"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2375:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2378:28: (kw= '||' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2380:2: kw= '||'
+            {
+            kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOr5408); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                      current.merge(kw);
+                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpOr"
+
+
+    // $ANTLR start "entryRuleXAndExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2393:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    public final EObject entryRuleXAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAndExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2394:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2395:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression5447);
+            iv_ruleXAndExpression=ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAndExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression5457); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAndExpression"
+
+
+    // $ANTLR start "ruleXAndExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2402:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    public final EObject ruleXAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XEqualityExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2405:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2406:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2406:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2407:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5504);
+            this_XEqualityExpression_0=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XEqualityExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop45:
+            do {
+                int alt45=2;
+                int LA45_0 = input.LA(1);
+
+                if ( (LA45_0==57) ) {
+                    int LA45_2 = input.LA(2);
+
+                    if ( (synpred10_InternalCubeDSL()) ) {
+                        alt45=1;
+                    }
+
+
+                }
+
+
+                switch (alt45) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2420:6: ( () ( ( ruleOpAnd ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2420:7: () ( ( ruleOpAnd ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2420:7: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2421:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2426:2: ( ( ruleOpAnd ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2427:1: ( ruleOpAnd )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2427:1: ( ruleOpAnd )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2428:3: ruleOpAnd
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression5557);
+            	    ruleOpAnd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2441:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2442:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2442:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2443:3: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5580);
+            	    lv_rightOperand_3_0=ruleXEqualityExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XEqualityExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop45;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2467:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    public final String entryRuleOpAnd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2468:2: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2469:2: iv_ruleOpAnd= ruleOpAnd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAndRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd5619);
+            iv_ruleOpAnd=ruleOpAnd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAnd.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd5630); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpAnd"
+
+
+    // $ANTLR start "ruleOpAnd"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2476:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2479:28: (kw= '&&' )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2481:2: kw= '&&'
+            {
+            kw=(Token)match(input,57,FOLLOW_57_in_ruleOpAnd5667); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                      current.merge(kw);
+                      newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
+                  
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpAnd"
+
+
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2494:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXEqualityExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2495:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2496:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression5706);
+            iv_ruleXEqualityExpression=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXEqualityExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression5716); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXEqualityExpression"
+
+
+    // $ANTLR start "ruleXEqualityExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2503:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
+    public final EObject ruleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XRelationalExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2506:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2507:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2507:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2508:5: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5763);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XRelationalExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            loop46:
+            do {
+                int alt46=2;
+                switch ( input.LA(1) ) {
+                case 58:
+                    {
+                    int LA46_2 = input.LA(2);
+
+                    if ( (synpred11_InternalCubeDSL()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+                case 59:
+                    {
+                    int LA46_3 = input.LA(2);
+
+                    if ( (synpred11_InternalCubeDSL()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+                case 60:
+                    {
+                    int LA46_4 = input.LA(2);
+
+                    if ( (synpred11_InternalCubeDSL()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+                case 61:
+                    {
+                    int LA46_5 = input.LA(2);
+
+                    if ( (synpred11_InternalCubeDSL()) ) {
+                        alt46=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt46) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2521:6: ( () ( ( ruleOpEquality ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2521:7: () ( ( ruleOpEquality ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2521:7: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2522:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2527:2: ( ( ruleOpEquality ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2528:1: ( ruleOpEquality )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2528:1: ( ruleOpEquality )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2529:3: ruleOpEquality
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpEquality_in_ruleXEqualityExpression5816);
+            	    ruleOpEquality();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2542:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2543:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2543:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2544:3: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5839);
+            	    lv_rightOperand_3_0=ruleXRelationalExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XRelationalExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop46;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXEqualityExpression"
+
+
+    // $ANTLR start "entryRuleOpEquality"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2568:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    public final String entryRuleOpEquality() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2569:2: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2570:2: iv_ruleOpEquality= ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality5878);
+            iv_ruleOpEquality=ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpEquality.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality5889); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2577:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2580:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2581:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2581:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt47=4;
+            switch ( input.LA(1) ) {
+            case 58:
+                {
+                alt47=1;
+                }
+                break;
+            case 59:
+                {
+                alt47=2;
+                }
+                break;
+            case 60:
+                {
+                alt47=3;
+                }
+                break;
+            case 61:
+                {
+                alt47=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 47, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt47) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2582:2: kw= '=='
+                    {
+                    kw=(Token)match(input,58,FOLLOW_58_in_ruleOpEquality5927); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2589:2: kw= '!='
+                    {
+                    kw=(Token)match(input,59,FOLLOW_59_in_ruleOpEquality5946); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2596:2: kw= '==='
+                    {
+                    kw=(Token)match(input,60,FOLLOW_60_in_ruleOpEquality5965); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2603:2: kw= '!=='
+                    {
+                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpEquality5984); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2616:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXRelationalExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2617:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2618:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression6024);
+            iv_ruleXRelationalExpression=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXRelationalExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression6034); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2625:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
+    public final EObject ruleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_XOtherOperatorExpression_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+        EObject lv_rightOperand_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2628:28: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2629:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2629:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2630:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression6081);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XOtherOperatorExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop48:
+            do {
+                int alt48=3;
+                switch ( input.LA(1) ) {
+                case 53:
+                    {
+                    int LA48_2 = input.LA(2);
+
+                    if ( (synpred13_InternalCubeDSL()) ) {
+                        alt48=2;
+                    }
+
+
+                    }
+                    break;
+                case 54:
+                    {
+                    int LA48_3 = input.LA(2);
+
+                    if ( (synpred13_InternalCubeDSL()) ) {
+                        alt48=2;
+                    }
+
+
+                    }
+                    break;
+                case 62:
+                    {
+                    int LA48_4 = input.LA(2);
+
+                    if ( (synpred12_InternalCubeDSL()) ) {
+                        alt48=1;
+                    }
+
+
+                    }
+                    break;
+                case 55:
+                    {
+                    int LA48_5 = input.LA(2);
+
+                    if ( (synpred13_InternalCubeDSL()) ) {
+                        alt48=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt48) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2640:5: ( () otherlv_2= 'instanceof' )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2640:6: () otherlv_2= 'instanceof'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2640:6: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2641:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,62,FOLLOW_62_in_ruleXRelationalExpression6117); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	          
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2650:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2651:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2651:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2652:3: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression6140);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"type",
+            	              		lv_type_3_0, 
+            	              		"JvmTypeReference");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2674:6: ( () ( ( ruleOpCompare ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2674:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2674:7: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2675:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2680:2: ( ( ruleOpCompare ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2681:1: ( ruleOpCompare )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2681:1: ( ruleOpCompare )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2682:3: ruleOpCompare
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXRelationalExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpCompare_in_ruleXRelationalExpression6201);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2695:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2696:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2696:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2697:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression6224);
+            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_6_0, 
+            	              		"XOtherOperatorExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop48;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2721:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    public final String entryRuleOpCompare() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2722:2: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2723:2: iv_ruleOpCompare= ruleOpCompare EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpCompareRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare6264);
+            iv_ruleOpCompare=ruleOpCompare();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpCompare.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare6275); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpCompare"
+
+
+    // $ANTLR start "ruleOpCompare"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2730:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
+    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2733:28: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2734:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2734:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt49=4;
+            switch ( input.LA(1) ) {
+            case 55:
+                {
+                alt49=1;
+                }
+                break;
+            case 53:
+                {
+                int LA49_2 = input.LA(2);
+
+                if ( (LA49_2==EOF||(LA49_2>=RULE_ID && LA49_2<=RULE_DECIMAL)||LA49_2==14||LA49_2==37||LA49_2==41||(LA49_2>=45 && LA49_2<=46)||LA49_2==53||(LA49_2>=69 && LA49_2<=70)||LA49_2==74||LA49_2==81||LA49_2==83||(LA49_2>=87 && LA49_2<=89)||(LA49_2>=92 && LA49_2<=103)||LA49_2==105) ) {
+                    alt49=4;
+                }
+                else if ( (LA49_2==44) ) {
+                    alt49=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 49, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 54:
+                {
+                alt49=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 49, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt49) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2735:2: kw= '>='
+                    {
+                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpCompare6313); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2741:6: (kw= '<' kw= '=' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2741:6: (kw= '<' kw= '=' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2742:2: kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpCompare6333); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+                          
+                    }
+                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpCompare6346); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2755:2: kw= '>'
+                    {
+                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpCompare6366); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2762:2: kw= '<'
+                    {
+                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpCompare6385); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpCompare"
+
+
+    // $ANTLR start "entryRuleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2775:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOtherOperatorExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2776:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2777:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression6425);
+            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXOtherOperatorExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression6435); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXOtherOperatorExpression"
+
+
+    // $ANTLR start "ruleXOtherOperatorExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2784:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
+    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XAdditiveExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2787:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2788:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2788:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2789:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6482);
+            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XAdditiveExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop50:
+            do {
+                int alt50=2;
+                alt50 = dfa50.predict(input);
+                switch (alt50) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2802:6: ( () ( ( ruleOpOther ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2802:7: () ( ( ruleOpOther ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2802:7: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2803:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2808:2: ( ( ruleOpOther ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2809:1: ( ruleOpOther )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2809:1: ( ruleOpOther )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2810:3: ruleOpOther
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression6535);
+            	    ruleOpOther();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2823:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2824:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2824:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2825:3: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6558);
+            	    lv_rightOperand_3_0=ruleXAdditiveExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXOtherOperatorExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XAdditiveExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop50;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXOtherOperatorExpression"
+
+
+    // $ANTLR start "entryRuleOpOther"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2849:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    public final String entryRuleOpOther() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpOther = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2850:2: (iv_ruleOpOther= ruleOpOther EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2851:2: iv_ruleOpOther= ruleOpOther EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpOtherRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther6597);
+            iv_ruleOpOther=ruleOpOther();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpOther.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther6608); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpOther"
+
+
+    // $ANTLR start "ruleOpOther"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2858:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2861:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2862:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2862:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt53=9;
+            alt53 = dfa53.predict(input);
+            switch (alt53) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2863:2: kw= '->'
+                    {
+                    kw=(Token)match(input,63,FOLLOW_63_in_ruleOpOther6646); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2870:2: kw= '..<'
+                    {
+                    kw=(Token)match(input,64,FOLLOW_64_in_ruleOpOther6665); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2876:6: (kw= '>' kw= '..' )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2876:6: (kw= '>' kw= '..' )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2877:2: kw= '>' kw= '..'
+                    {
+                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6685); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+                          
+                    }
+                    kw=(Token)match(input,65,FOLLOW_65_in_ruleOpOther6698); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2890:2: kw= '..'
+                    {
+                    kw=(Token)match(input,65,FOLLOW_65_in_ruleOpOther6718); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2897:2: kw= '=>'
+                    {
+                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpOther6737); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2903:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2903:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2904:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    {
+                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6757); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt51=2;
+                    int LA51_0 = input.LA(1);
+
+                    if ( (LA51_0==54) ) {
+                        int LA51_1 = input.LA(2);
+
+                        if ( (LA51_1==54) && (synpred15_InternalCubeDSL())) {
+                            alt51=1;
+                        }
+                        else if ( (LA51_1==EOF||(LA51_1>=RULE_ID && LA51_1<=RULE_DECIMAL)||LA51_1==14||LA51_1==37||LA51_1==41||(LA51_1>=45 && LA51_1<=46)||LA51_1==53||(LA51_1>=69 && LA51_1<=70)||LA51_1==74||LA51_1==81||LA51_1==83||(LA51_1>=87 && LA51_1<=89)||(LA51_1>=92 && LA51_1<=103)||LA51_1==105) ) {
+                            alt51=2;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return current;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 51, 1, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 51, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt51) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2913:5: (kw= '>' kw= '>' )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2914:2: kw= '>' kw= '>'
+                            {
+                            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6788); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+                                  
+                            }
+                            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6801); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+                                  
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2927:2: kw= '>'
+                            {
+                            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6822); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2933:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2933:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2934:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    {
+                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6844); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+                          
+                    }
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt52=3;
+                    int LA52_0 = input.LA(1);
+
+                    if ( (LA52_0==53) ) {
+                        int LA52_1 = input.LA(2);
+
+                        if ( (synpred16_InternalCubeDSL()) ) {
+                            alt52=1;
+                        }
+                        else if ( (true) ) {
+                            alt52=2;
+                        }
+                        else {
+                            if (state.backtracking>0) {state.failed=true; return current;}
+                            NoViableAltException nvae =
+                                new NoViableAltException("", 52, 1, input);
+
+                            throw nvae;
+                        }
+                    }
+                    else if ( (LA52_0==66) ) {
+                        alt52=3;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 52, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt52) {
+                        case 1 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            {
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2943:5: (kw= '<' kw= '<' )
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2944:2: kw= '<' kw= '<'
+                            {
+                            kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6875); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+                                  
+                            }
+                            kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6888); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+                                  
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2957:2: kw= '<'
+                            {
+                            kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6909); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+                                  
+                            }
+
+                            }
+                            break;
+                        case 3 :
+                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2964:2: kw= '=>'
+                            {
+                            kw=(Token)match(input,66,FOLLOW_66_in_ruleOpOther6928); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      current.merge(kw);
+                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2971:2: kw= '<>'
+                    {
+                    kw=(Token)match(input,67,FOLLOW_67_in_ruleOpOther6949); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2978:2: kw= '?:'
+                    {
+                    kw=(Token)match(input,68,FOLLOW_68_in_ruleOpOther6968); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpOther"
+
+
+    // $ANTLR start "entryRuleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2991:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAdditiveExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2992:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2993:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression7008);
+            iv_ruleXAdditiveExpression=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAdditiveExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression7018); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAdditiveExpression"
+
+
+    // $ANTLR start "ruleXAdditiveExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3000:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    public final EObject ruleXAdditiveExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XMultiplicativeExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3003:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3004:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3004:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3005:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression7065);
+            this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XMultiplicativeExpression_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop54:
+            do {
+                int alt54=2;
+                int LA54_0 = input.LA(1);
+
+                if ( (LA54_0==69) ) {
+                    int LA54_2 = input.LA(2);
+
+                    if ( (synpred17_InternalCubeDSL()) ) {
+                        alt54=1;
+                    }
+
+
+                }
+                else if ( (LA54_0==70) ) {
+                    int LA54_3 = input.LA(2);
+
+                    if ( (synpred17_InternalCubeDSL()) ) {
+                        alt54=1;
+                    }
+
+
+                }
+
+
+                switch (alt54) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3018:6: ( () ( ( ruleOpAdd ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3018:7: () ( ( ruleOpAdd ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3018:7: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3019:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3024:2: ( ( ruleOpAdd ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3025:1: ( ruleOpAdd )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3025:1: ( ruleOpAdd )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3026:3: ruleOpAdd
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression7118);
+            	    ruleOpAdd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3039:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3040:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3040:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3041:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression7141);
+            	    lv_rightOperand_3_0=ruleXMultiplicativeExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXAdditiveExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XMultiplicativeExpression");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop54;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAdditiveExpression"
+
+
+    // $ANTLR start "entryRuleOpAdd"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3065:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    public final String entryRuleOpAdd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAdd = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3066:2: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3067:2: iv_ruleOpAdd= ruleOpAdd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAddRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd7180);
+            iv_ruleOpAdd=ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAdd.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd7191); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpAdd"
+
+
+    // $ANTLR start "ruleOpAdd"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3074:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3077:28: ( (kw= '+' | kw= '-' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3078:1: (kw= '+' | kw= '-' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3078:1: (kw= '+' | kw= '-' )
+            int alt55=2;
+            int LA55_0 = input.LA(1);
+
+            if ( (LA55_0==69) ) {
+                alt55=1;
+            }
+            else if ( (LA55_0==70) ) {
+                alt55=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 55, 0, input);
+
+                throw nvae;
+            }
+            switch (alt55) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3079:2: kw= '+'
+                    {
+                    kw=(Token)match(input,69,FOLLOW_69_in_ruleOpAdd7229); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3086:2: kw= '-'
+                    {
+                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpAdd7248); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpAdd"
+
+
+    // $ANTLR start "entryRuleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3099:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXMultiplicativeExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3100:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3101:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression7288);
+            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXMultiplicativeExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression7298); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
+
+
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3108:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XUnaryOperation_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3111:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3112:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3112:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3113:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression7345);
+            this_XUnaryOperation_0=ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XUnaryOperation_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop56:
+            do {
+                int alt56=2;
+                switch ( input.LA(1) ) {
+                case 39:
+                    {
+                    int LA56_2 = input.LA(2);
+
+                    if ( (synpred18_InternalCubeDSL()) ) {
+                        alt56=1;
+                    }
+
+
+                    }
+                    break;
+                case 71:
+                    {
+                    int LA56_3 = input.LA(2);
+
+                    if ( (synpred18_InternalCubeDSL()) ) {
+                        alt56=1;
+                    }
+
+
+                    }
+                    break;
+                case 72:
+                    {
+                    int LA56_4 = input.LA(2);
+
+                    if ( (synpred18_InternalCubeDSL()) ) {
+                        alt56=1;
+                    }
+
+
+                    }
+                    break;
+                case 73:
+                    {
+                    int LA56_5 = input.LA(2);
+
+                    if ( (synpred18_InternalCubeDSL()) ) {
+                        alt56=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt56) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:3: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3126:6: ( () ( ( ruleOpMulti ) ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3126:7: () ( ( ruleOpMulti ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3126:7: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3127:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3132:2: ( ( ruleOpMulti ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3133:1: ( ruleOpMulti )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3133:1: ( ruleOpMulti )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3134:3: ruleOpMulti
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+            	      	        }
+            	              
+            	    }
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression7398);
+            	    ruleOpMulti();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3147:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3148:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3148:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3149:3: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression7421);
+            	    lv_rightOperand_3_0=ruleXUnaryOperation();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXMultiplicativeExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"rightOperand",
+            	              		lv_rightOperand_3_0, 
+            	              		"XUnaryOperation");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop56;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3173:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    public final String entryRuleOpMulti() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMulti = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3174:2: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3175:2: iv_ruleOpMulti= ruleOpMulti EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpMultiRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti7460);
+            iv_ruleOpMulti=ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpMulti.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti7471); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpMulti"
+
+
+    // $ANTLR start "ruleOpMulti"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3182:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
+    public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3185:28: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3186:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3186:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt57=4;
+            switch ( input.LA(1) ) {
+            case 39:
+                {
+                alt57=1;
+                }
+                break;
+            case 71:
+                {
+                alt57=2;
+                }
+                break;
+            case 72:
+                {
+                alt57=3;
+                }
+                break;
+            case 73:
+                {
+                alt57=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 57, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt57) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3187:2: kw= '*'
+                    {
+                    kw=(Token)match(input,39,FOLLOW_39_in_ruleOpMulti7509); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3194:2: kw= '**'
+                    {
+                    kw=(Token)match(input,71,FOLLOW_71_in_ruleOpMulti7528); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3201:2: kw= '/'
+                    {
+                    kw=(Token)match(input,72,FOLLOW_72_in_ruleOpMulti7547); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3208:2: kw= '%'
+                    {
+                    kw=(Token)match(input,73,FOLLOW_73_in_ruleOpMulti7566); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpMulti"
+
+
+    // $ANTLR start "entryRuleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3221:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXUnaryOperation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3222:2: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3223:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
+            }
+            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation7606);
+            iv_ruleXUnaryOperation=ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXUnaryOperation; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation7616); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXUnaryOperation"
+
+
+    // $ANTLR start "ruleXUnaryOperation"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3230:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
+    public final EObject ruleXUnaryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_operand_2_0 = null;
+
+        EObject this_XCastedExpression_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3233:28: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt58=2;
+            int LA58_0 = input.LA(1);
+
+            if ( ((LA58_0>=69 && LA58_0<=70)||LA58_0==74) ) {
+                alt58=1;
+            }
+            else if ( ((LA58_0>=RULE_ID && LA58_0<=RULE_DECIMAL)||LA58_0==14||LA58_0==37||LA58_0==41||(LA58_0>=45 && LA58_0<=46)||LA58_0==53||LA58_0==81||LA58_0==83||(LA58_0>=87 && LA58_0<=89)||(LA58_0>=92 && LA58_0<=103)||LA58_0==105) ) {
+                alt58=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 58, 0, input);
+
+                throw nvae;
+            }
+            switch (alt58) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:3: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:3: ()
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3235:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElement(
+                                  grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3240:2: ( ( ruleOpUnary ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3241:1: ( ruleOpUnary )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3241:1: ( ruleOpUnary )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3242:3: ruleOpUnary
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getXUnaryOperationRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleOpUnary_in_ruleXUnaryOperation7674);
+                    ruleOpUnary();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3255:2: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3256:1: (lv_operand_2_0= ruleXUnaryOperation )
+                    {
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3256:1: (lv_operand_2_0= ruleXUnaryOperation )
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3257:3: lv_operand_2_0= ruleXUnaryOperation
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
+                      	    
+                    }
+                    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXUnaryOperation7695);
+                    lv_operand_2_0=ruleXUnaryOperation();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getXUnaryOperationRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"operand",
+                              		lv_operand_2_0, 
+                              		"XUnaryOperation");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3275:5: this_XCastedExpression_3= ruleXCastedExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7724);
+                    this_XCastedExpression_3=ruleXCastedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_XCastedExpression_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXUnaryOperation"
+
+
+    // $ANTLR start "entryRuleOpUnary"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3291:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    public final String entryRuleOpUnary() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpUnary = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3292:2: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3293:2: iv_ruleOpUnary= ruleOpUnary EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpUnaryRule()); 
+            }
+            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary7760);
+            iv_ruleOpUnary=ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpUnary.getText(); 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary7771); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpUnary"
+
+
+    // $ANTLR start "ruleOpUnary"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3300:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3303:28: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3304:1: (kw= '!' | kw= '-' | kw= '+' )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3304:1: (kw= '!' | kw= '-' | kw= '+' )
+            int alt59=3;
+            switch ( input.LA(1) ) {
+            case 74:
+                {
+                alt59=1;
+                }
+                break;
+            case 70:
+                {
+                alt59=2;
+                }
+                break;
+            case 69:
+                {
+                alt59=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 59, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt59) {
+                case 1 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3305:2: kw= '!'
+                    {
+                    kw=(Token)match(input,74,FOLLOW_74_in_ruleOpUnary7809); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3312:2: kw= '-'
+                    {
+                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpUnary7828); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3319:2: kw= '+'
+                    {
+                    kw=(Token)match(input,69,FOLLOW_69_in_ruleOpUnary7847); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              current.merge(kw);
+                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpUnary"
+
+
+    // $ANTLR start "entryRuleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3332:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    public final EObject entryRuleXCastedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCastedExpression = null;
+
+
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3333:2: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3334:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression7887);
+            iv_ruleXCastedExpression=ruleXCastedExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXCastedExpression; 
+            }
+            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression7897); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXCastedExpression"
+
+
+    // $ANTLR start "ruleXCastedExpression"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3341:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
+    public final EObject ruleXCastedExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_XPostfixOperation_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3344:28: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3345:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            {
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3345:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3346:5: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+               
+                      newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
+                  
+            }
+            pushFollow(FOLLOW_ruleXPostfixOperation_in_ruleXCastedExpression7944);
+            this_XPostfixOperation_0=ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+                      current = this_XPostfixOperation_0; 
+                      afterParserOrEnumRuleCall();
+                  
+            }
+            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:1: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop60:
+            do {
+                int alt60=2;
+                int LA60_0 = input.LA(1);
+
+                if ( (LA60_0==75) ) {
+                    int LA60_2 = input.LA(2);
+
+                    if ( (synpred19_InternalCubeDSL()) ) {
+                        alt60=1;
+                    }
+
+
+                }
+
+
+                switch (alt60) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:3: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3356:5: ( () otherlv_2= 'as' )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3356:6: () otherlv_2= 'as'
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3356:6: ()
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3357:5: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	              current = forceCreateModelElementAndSet(
+            	                  grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            	                  current);
+            	          
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,75,FOLLOW_75_in_ruleXCastedExpression7979); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+            	          
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3366:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3367:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3367:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3368:3: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression8002);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getXCastedExpressionRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"type",
+            	              		lv_type_3_0, 
+            	              		"JvmTypeReference");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop60;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXCastedExpression"
+
+
+    // $ANTLR start "entryRuleXPostfixOperation"
+    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3392:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSemanticSequencer.java
new file mode 100644
index 0000000..ecb7c30
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSemanticSequencer.java
@@ -0,0 +1,1597 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage;
+import org.eclipse.osbp.xtext.cubedsl.CubeEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevelProp;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+import org.eclipse.osbp.xtext.cubedsl.CubeModel;
+import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmGenericArrayTypeReference;
+import org.eclipse.xtext.common.types.JvmInnerTypeReference;
+import org.eclipse.xtext.common.types.JvmLowerBound;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmTypeParameter;
+import org.eclipse.xtext.common.types.JvmUpperBound;
+import org.eclipse.xtext.common.types.JvmWildcardTypeReference;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
+import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
+import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider;
+import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
+import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
+import org.eclipse.xtext.xbase.XAssignment;
+import org.eclipse.xtext.xbase.XBasicForLoopExpression;
+import org.eclipse.xtext.xbase.XBinaryOperation;
+import org.eclipse.xtext.xbase.XBlockExpression;
+import org.eclipse.xtext.xbase.XBooleanLiteral;
+import org.eclipse.xtext.xbase.XCasePart;
+import org.eclipse.xtext.xbase.XCastedExpression;
+import org.eclipse.xtext.xbase.XCatchClause;
+import org.eclipse.xtext.xbase.XClosure;
+import org.eclipse.xtext.xbase.XConstructorCall;
+import org.eclipse.xtext.xbase.XDoWhileExpression;
+import org.eclipse.xtext.xbase.XFeatureCall;
+import org.eclipse.xtext.xbase.XForLoopExpression;
+import org.eclipse.xtext.xbase.XIfExpression;
+import org.eclipse.xtext.xbase.XInstanceOfExpression;
+import org.eclipse.xtext.xbase.XListLiteral;
+import org.eclipse.xtext.xbase.XMemberFeatureCall;
+import org.eclipse.xtext.xbase.XNullLiteral;
+import org.eclipse.xtext.xbase.XNumberLiteral;
+import org.eclipse.xtext.xbase.XPostfixOperation;
+import org.eclipse.xtext.xbase.XReturnExpression;
+import org.eclipse.xtext.xbase.XSetLiteral;
+import org.eclipse.xtext.xbase.XStringLiteral;
+import org.eclipse.xtext.xbase.XSwitchExpression;
+import org.eclipse.xtext.xbase.XSynchronizedExpression;
+import org.eclipse.xtext.xbase.XThrowExpression;
+import org.eclipse.xtext.xbase.XTryCatchFinallyExpression;
+import org.eclipse.xtext.xbase.XTypeLiteral;
+import org.eclipse.xtext.xbase.XUnaryOperation;
+import org.eclipse.xtext.xbase.XVariableDeclaration;
+import org.eclipse.xtext.xbase.XWhileExpression;
+import org.eclipse.xtext.xbase.XbasePackage;
+import org.eclipse.xtext.xbase.annotations.serializer.XbaseWithAnnotationsSemanticSequencer;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationElementValuePair;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsPackage;
+import org.eclipse.xtext.xtype.XFunctionTypeRef;
+import org.eclipse.xtext.xtype.XImportDeclaration;
+import org.eclipse.xtext.xtype.XImportSection;
+import org.eclipse.xtext.xtype.XtypePackage;
+
+@SuppressWarnings("all")
+public class CubeDSLSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+
+	@Inject
+	private CubeDSLGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == CubeDSLPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case CubeDSLPackage.CUBE_DIMENSION:
+				if(context == grammarAccess.getCubeDimensionRule()) {
+					sequence_CubeDimension(context, (CubeDimension) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY:
+				if(context == grammarAccess.getCubeDimensionEntityRule()) {
+					sequence_CubeDimensionEntity(context, (CubeDimensionEntity) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY:
+				if(context == grammarAccess.getCubeDimensionEntityEntityRule()) {
+					sequence_CubeDimensionEntityEntity(context, (CubeDimensionEntityEntity) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_DIMENSION_USAGE:
+				if(context == grammarAccess.getCubeDimensionUsageRule()) {
+					sequence_CubeDimensionUsage(context, (CubeDimensionUsage) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_ENTITY:
+				if(context == grammarAccess.getCubeEntityRule()) {
+					sequence_CubeEntity(context, (CubeEntity) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_HIERARCHY:
+				if(context == grammarAccess.getCubeHierarchyRule()) {
+					sequence_CubeHierarchy(context, (CubeHierarchy) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_LEVEL:
+				if(context == grammarAccess.getCubeLevelRule()) {
+					sequence_CubeLevel(context, (CubeLevel) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_LEVEL_PROP:
+				if(context == grammarAccess.getCubeLevelPropRule()) {
+					sequence_CubeLevelProp(context, (CubeLevelProp) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_MEASURE:
+				if(context == grammarAccess.getCubeMeasureRule()) {
+					sequence_CubeMeasure(context, (CubeMeasure) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_MODEL:
+				if(context == grammarAccess.getCubeModelRule()) {
+					sequence_CubeModel(context, (CubeModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_PACKAGE:
+				if(context == grammarAccess.getCubePackageRule()) {
+					sequence_CubePackage(context, (CubePackage) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_TYPE:
+				if(context == grammarAccess.getCubeTypeRule()) {
+					sequence_CubeType(context, (CubeType) semanticObject); 
+					return; 
+				}
+				else break;
+			case CubeDSLPackage.CUBE_TYPE_ENTITY:
+				if(context == grammarAccess.getCubeTypeEntityRule()) {
+					sequence_CubeTypeEntity(context, (CubeTypeEntity) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getImportRule()) {
+					sequence_Import(context, (LImport) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == TypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case TypesPackage.JVM_FORMAL_PARAMETER:
+				if(context == grammarAccess.getFullJvmFormalParameterRule()) {
+					sequence_FullJvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmFormalParameterRule()) {
+					sequence_JvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_GENERIC_ARRAY_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmTypeReference(context, (JvmGenericArrayTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_INNER_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmParameterizedTypeReference(context, (JvmInnerTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_LOWER_BOUND:
+				if(context == grammarAccess.getJvmLowerBoundAndedRule()) {
+					sequence_JvmLowerBoundAnded(context, (JvmLowerBound) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmLowerBoundRule()) {
+					sequence_JvmLowerBound(context, (JvmLowerBound) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_PARAMETERIZED_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
+				   context == grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()) {
+					sequence_JvmParameterizedTypeReference(context, (JvmParameterizedTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_TYPE_PARAMETER:
+				if(context == grammarAccess.getJvmTypeParameterRule()) {
+					sequence_JvmTypeParameter(context, (JvmTypeParameter) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_UPPER_BOUND:
+				if(context == grammarAccess.getJvmUpperBoundAndedRule()) {
+					sequence_JvmUpperBoundAnded(context, (JvmUpperBound) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getJvmUpperBoundRule()) {
+					sequence_JvmUpperBound(context, (JvmUpperBound) semanticObject); 
+					return; 
+				}
+				else break;
+			case TypesPackage.JVM_WILDCARD_TYPE_REFERENCE:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmWildcardTypeReferenceRule()) {
+					sequence_JvmWildcardTypeReference(context, (JvmWildcardTypeReference) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XAnnotationsPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XAnnotationsPackage.XANNOTATION:
+				if(context == grammarAccess.getXAnnotationRule() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule()) {
+					sequence_XAnnotation(context, (XAnnotation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XAnnotationsPackage.XANNOTATION_ELEMENT_VALUE_PAIR:
+				if(context == grammarAccess.getXAnnotationElementValuePairRule()) {
+					sequence_XAnnotationElementValuePair(context, (XAnnotationElementValuePair) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XbasePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XbasePackage.XASSIGNMENT:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XAssignment_XMemberFeatureCall(context, (XAssignment) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBASIC_FOR_LOOP_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBasicForLoopExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBasicForLoopExpression(context, (XBasicForLoopExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBINARY_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XAdditiveExpression_XAndExpression_XAssignment_XEqualityExpression_XMultiplicativeExpression_XOrExpression_XOtherOperatorExpression_XRelationalExpression(context, (XBinaryOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBLOCK_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBlockExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBlockExpression(context, (XBlockExpression) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXExpressionInClosureRule()) {
+					sequence_XExpressionInClosure(context, (XBlockExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XBOOLEAN_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXBooleanLiteralRule() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XBooleanLiteral(context, (XBooleanLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCASE_PART:
+				if(context == grammarAccess.getXCasePartRule()) {
+					sequence_XCasePart(context, (XCasePart) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCASTED_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XCastedExpression(context, (XCastedExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCATCH_CLAUSE:
+				if(context == grammarAccess.getXCatchClauseRule()) {
+					sequence_XCatchClause(context, (XCatchClause) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCLOSURE:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXClosureRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XClosure(context, (XClosure) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXShortClosureRule()) {
+					sequence_XShortClosure(context, (XClosure) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XCONSTRUCTOR_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXConstructorCallRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XConstructorCall(context, (XConstructorCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XDO_WHILE_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXDoWhileExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XDoWhileExpression(context, (XDoWhileExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XFEATURE_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XFeatureCall(context, (XFeatureCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XFOR_LOOP_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXForLoopExpressionRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XForLoopExpression(context, (XForLoopExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XIF_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXIfExpressionRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XIfExpression(context, (XIfExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XINSTANCE_OF_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XRelationalExpression(context, (XInstanceOfExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XLIST_LITERAL:
+				if(context == grammarAccess.getXAnnotationElementValueOrCommaListRule()) {
+					sequence_XAnnotationElementValueOrCommaList_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXAnnotationElementValueRule()) {
+					sequence_XAnnotationElementValue_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXCollectionLiteralRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXListLiteralRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XListLiteral(context, (XListLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XMEMBER_FEATURE_CALL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XMemberFeatureCall(context, (XMemberFeatureCall) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XNULL_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXNullLiteralRule() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XNullLiteral(context, (XNullLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XNUMBER_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXNumberLiteralRule() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XNumberLiteral(context, (XNumberLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XPOSTFIX_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XPostfixOperation(context, (XPostfixOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XRETURN_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXReturnExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XReturnExpression(context, (XReturnExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSET_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXCollectionLiteralRule() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSetLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSetLiteral(context, (XSetLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSTRING_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXStringLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XStringLiteral(context, (XStringLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSWITCH_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSwitchExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSwitchExpression(context, (XSwitchExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XSYNCHRONIZED_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXSynchronizedExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XSynchronizedExpression(context, (XSynchronizedExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTHROW_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXThrowExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XThrowExpression(context, (XThrowExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTRY_CATCH_FINALLY_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXTryCatchFinallyExpressionRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XTryCatchFinallyExpression(context, (XTryCatchFinallyExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XTYPE_LITERAL:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXLiteralRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXTypeLiteralRule() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XTypeLiteral(context, (XTypeLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XUNARY_OPERATION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule()) {
+					sequence_XUnaryOperation(context, (XUnaryOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XVARIABLE_DECLARATION:
+				if(context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXVariableDeclarationRule()) {
+					sequence_XVariableDeclaration(context, (XVariableDeclaration) semanticObject); 
+					return; 
+				}
+				else break;
+			case XbasePackage.XWHILE_EXPRESSION:
+				if(context == grammarAccess.getXAdditiveExpressionRule() ||
+				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAndExpressionRule() ||
+				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXAnnotationElementValueRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListRule() ||
+				   context == grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0() ||
+				   context == grammarAccess.getXAnnotationOrExpressionRule() ||
+				   context == grammarAccess.getXAssignmentRule() ||
+				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXCastedExpressionRule() ||
+				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
+				   context == grammarAccess.getXEqualityExpressionRule() ||
+				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXExpressionRule() ||
+				   context == grammarAccess.getXExpressionOrVarDeclarationRule() ||
+				   context == grammarAccess.getXMemberFeatureCallRule() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
+				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOrExpressionRule() ||
+				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
+				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
+				   context == grammarAccess.getXParenthesizedExpressionRule() ||
+				   context == grammarAccess.getXPostfixOperationRule() ||
+				   context == grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0() ||
+				   context == grammarAccess.getXPrimaryExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionRule() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
+				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
+				   context == grammarAccess.getXUnaryOperationRule() ||
+				   context == grammarAccess.getXWhileExpressionRule()) {
+					sequence_XWhileExpression(context, (XWhileExpression) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == XtypePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case XtypePackage.XFUNCTION_TYPE_REF:
+				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
+				   context == grammarAccess.getJvmTypeReferenceRule() ||
+				   context == grammarAccess.getXFunctionTypeRefRule()) {
+					sequence_XFunctionTypeRef(context, (XFunctionTypeRef) semanticObject); 
+					return; 
+				}
+				else break;
+			case XtypePackage.XIMPORT_DECLARATION:
+				if(context == grammarAccess.getXImportDeclarationRule()) {
+					sequence_XImportDeclaration(context, (XImportDeclaration) semanticObject); 
+					return; 
+				}
+				else break;
+			case XtypePackage.XIMPORT_SECTION:
+				if(context == grammarAccess.getXImportSectionRule()) {
+					sequence_XImportSection(context, (XImportSection) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+	}
+	
+	/**
+	 * Constraint:
+	 *     (entityRef=CubeEntity overValue=[LEntityFeature|LFQN] hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity?)
+	 */
+	protected void sequence_CubeDimensionEntityEntity(EObject context, CubeDimensionEntityEntity semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (entityRef=CubeEntity hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity?)
+	 */
+	protected void sequence_CubeDimensionEntity(EObject context, CubeDimensionEntity semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (sourceValue=[CubeDimension|ID] overValue=[LEntityFeature|LFQN])
+	 */
+	protected void sequence_CubeDimensionUsage(EObject context, CubeDimensionUsage semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE));
+			if(transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1(), semanticObject.getSourceValue());
+		feeder.accept(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1(), semanticObject.getOverValue());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=TRANSLATABLEID typeTime?='typeTime'? hierarchies+=CubeHierarchy*)
+	 */
+	protected void sequence_CubeDimension(EObject context, CubeDimension semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (entityValue=[LEntity|LFQN] (key?='key=' keyValue=[LEntityFeature|LFQN])?)
+	 */
+	protected void sequence_CubeEntity(EObject context, CubeEntity semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=TRANSLATABLEID? 
+	 *         hasAll?='hasAll'? 
+	 *         (allMemberName?='allMemberName=' allMemberNameValue=TRANSLATABLESTRING)? 
+	 *         (defaultMember?='defaultMember=' defaultMemberValue=TRANSLATABLESTRING)? 
+	 *         cubeDimEntity=CubeDimensionEntity
+	 *     )
+	 */
+	protected void sequence_CubeHierarchy(EObject context, CubeHierarchy semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=TRANSLATABLEID levelPropColValue=[LEntityFeature|LFQN] (type?='type=' typeValue=CubeLevelPropType)?)
+	 */
+	protected void sequence_CubeLevelProp(EObject context, CubeLevelProp semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=TRANSLATABLEID 
+	 *         levelColValue=[LEntityFeature|LFQN] 
+	 *         uniqueMembers?='uniqueMembers'? 
+	 *         (levelType?='levelType=' levelTypeValue=CubeLevelLevelType)? 
+	 *         properties+=CubeLevelProp*
+	 *     )
+	 */
+	protected void sequence_CubeLevel(EObject context, CubeLevel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=TRANSLATABLEID aggregator=CubeAggregatorEnum measureCol=[LEntityFeature|LFQN] notVisible?='notVisible'?)
+	 */
+	protected void sequence_CubeMeasure(EObject context, CubeMeasure semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     pckg=CubePackage
+	 */
+	protected void sequence_CubeModel(EObject context, CubeModel semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_MODEL__PCKG) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CubeDSLPackage.Literals.CUBE_MODEL__PCKG));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_1_0(), semanticObject.getPckg());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=QualifiedName (imports+=Import* dimensions+=CubeDimension* cubes+=CubeType*)?)
+	 */
+	protected void sequence_CubePackage(EObject context, CubePackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (entityRef=CubeEntity dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure*)
+	 */
+	protected void sequence_CubeTypeEntity(EObject context, CubeTypeEntity semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID (defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)? cubeTypeEntity=CubeTypeEntity)
+	 */
+	protected void sequence_CubeType(EObject context, CubeType semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     importedNamespace=CubeQualifiedNameWithWildCard
+	 */
+	protected void sequence_Import(EObject context, LImport semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getImportAccess().getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
+		feeder.finish();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSyntacticSequencer.java
new file mode 100644
index 0000000..c38eb5b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSyntacticSequencer.java
@@ -0,0 +1,191 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public class CubeDSLSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected CubeDSLGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__;
+	protected AbstractElementAlias match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q;
+	protected AbstractElementAlias match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q;
+	protected AbstractElementAlias match_XBlockExpression_SemicolonKeyword_2_1_q;
+	protected AbstractElementAlias match_XExpressionInClosure_SemicolonKeyword_1_1_q;
+	protected AbstractElementAlias match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q;
+	protected AbstractElementAlias match_XImportDeclaration_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_a;
+	protected AbstractElementAlias match_XParenthesizedExpression_LeftParenthesisKeyword_0_p;
+	
+	@Inject
+	protected void init(IGrammarAccess access) {
+		grammarAccess = (CubeDSLGrammarAccess) access;
+		match_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0()), new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2())), new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0()));
+		match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()), new TokenAlias(false, false, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4()));
+		match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()));
+		match_XBlockExpression_SemicolonKeyword_2_1_q = new TokenAlias(false, true, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+		match_XExpressionInClosure_SemicolonKeyword_1_1_q = new TokenAlias(false, true, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+		match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()), new TokenAlias(false, false, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()));
+		match_XImportDeclaration_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_2());
+		match_XParenthesizedExpression_LeftParenthesisKeyword_0_a = new TokenAlias(true, true, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+		match_XParenthesizedExpression_LeftParenthesisKeyword_0_p = new TokenAlias(true, false, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
+	}
+	
+	@Override
+	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if(ruleCall.getRule() == grammarAccess.getArrayBracketsRule())
+			return getArrayBracketsToken(semanticObject, ruleCall, node);
+		else if(ruleCall.getRule() == grammarAccess.getOpSingleAssignRule())
+			return getOpSingleAssignToken(semanticObject, ruleCall, node);
+		return "";
+	}
+	
+	/**
+	 * ArrayBrackets :
+	 * 	'[' ']'
+	 * ;
+	 */
+	protected String getArrayBracketsToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "[]";
+	}
+	
+	/**
+	 * OpSingleAssign:
+	 * 	'='
+	 * ;
+	 */
+	protected String getOpSingleAssignToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		if (node != null)
+			return getTokenText(node);
+		return "=";
+	}
+	
+	@Override
+	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
+		if (transition.getAmbiguousSyntaxes().isEmpty()) return;
+		List<INode> transitionNodes = collectNodes(fromNode, toNode);
+		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
+			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
+			if(match_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__.equals(syntax))
+				emit_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q.equals(syntax))
+				emit_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
+				emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XBlockExpression_SemicolonKeyword_2_1_q.equals(syntax))
+				emit_XBlockExpression_SemicolonKeyword_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XExpressionInClosure_SemicolonKeyword_1_1_q.equals(syntax))
+				emit_XExpressionInClosure_SemicolonKeyword_1_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q.equals(syntax))
+				emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XImportDeclaration_SemicolonKeyword_2_q.equals(syntax))
+				emit_XImportDeclaration_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_a.equals(syntax))
+				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_XParenthesizedExpression_LeftParenthesisKeyword_0_p.equals(syntax))
+				emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else acceptNodes(getLastNavigableState(), syntaxNodes);
+		}
+	}
+
+	/**
+	 * Syntax:
+	 *     ';' | ('{' '}')
+	 */
+	protected void emit_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' ')')?
+	 */
+	protected void emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XExpressionInClosure_SemicolonKeyword_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' ')')?
+	 */
+	protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_XImportDeclaration_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('*
+	 */
+	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     '('+
+	 */
+	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/services/CubeDSLGrammarAccess.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/services/CubeDSLGrammarAccess.java
new file mode 100644
index 0000000..c707151
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/services/CubeDSLGrammarAccess.java
@@ -0,0 +1,2420 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import java.util.List;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.xbase.annotations.services.XbaseWithAnnotationsGrammarAccess;
+import org.eclipse.xtext.xbase.services.XbaseGrammarAccess;
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
+
+@Singleton
+public class CubeDSLGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class CubeModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeModel");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cCubeModelAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cPckgAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cPckgCubePackageParserRuleCall_1_0 = (RuleCall)cPckgAssignment_1.eContents().get(0);
+		
+		//CubeModel:
+		//	{CubeModel} pckg=CubePackage;
+		public ParserRule getRule() { return rule; }
+
+		//{CubeModel} pckg=CubePackage
+		public Group getGroup() { return cGroup; }
+
+		//{CubeModel}
+		public Action getCubeModelAction_0() { return cCubeModelAction_0; }
+
+		//pckg=CubePackage
+		public Assignment getPckgAssignment_1() { return cPckgAssignment_1; }
+
+		//CubePackage
+		public RuleCall getPckgCubePackageParserRuleCall_1_0() { return cPckgCubePackageParserRuleCall_1_0; }
+	}
+
+	public class CubePackageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubePackage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPackageKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cLeftCurlyBracketKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cImportsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cImportsImportParserRuleCall_2_1_0 = (RuleCall)cImportsAssignment_2_1.eContents().get(0);
+		private final Assignment cDimensionsAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
+		private final RuleCall cDimensionsCubeDimensionParserRuleCall_2_2_0 = (RuleCall)cDimensionsAssignment_2_2.eContents().get(0);
+		private final Assignment cCubesAssignment_2_3 = (Assignment)cGroup_2.eContents().get(3);
+		private final RuleCall cCubesCubeTypeParserRuleCall_2_3_0 = (RuleCall)cCubesAssignment_2_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_4 = (Keyword)cGroup_2.eContents().get(4);
+		
+		//CubePackage:
+		//	"package" name=QualifiedName ("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?;
+		public ParserRule getRule() { return rule; }
+
+		//"package" name=QualifiedName ("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?
+		public Group getGroup() { return cGroup; }
+
+		//"package"
+		public Keyword getPackageKeyword_0() { return cPackageKeyword_0; }
+
+		//name=QualifiedName
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//QualifiedName
+		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }
+
+		//("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_0() { return cLeftCurlyBracketKeyword_2_0; }
+
+		//imports+=Import*
+		public Assignment getImportsAssignment_2_1() { return cImportsAssignment_2_1; }
+
+		//Import
+		public RuleCall getImportsImportParserRuleCall_2_1_0() { return cImportsImportParserRuleCall_2_1_0; }
+
+		//dimensions+=CubeDimension*
+		public Assignment getDimensionsAssignment_2_2() { return cDimensionsAssignment_2_2; }
+
+		//CubeDimension
+		public RuleCall getDimensionsCubeDimensionParserRuleCall_2_2_0() { return cDimensionsCubeDimensionParserRuleCall_2_2_0; }
+
+		//cubes+=CubeType*
+		public Assignment getCubesAssignment_2_3() { return cCubesAssignment_2_3; }
+
+		//CubeType
+		public RuleCall getCubesCubeTypeParserRuleCall_2_3_0() { return cCubesCubeTypeParserRuleCall_2_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_4() { return cRightCurlyBracketKeyword_2_4; }
+	}
+
+	public class CubeTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCubeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cDefaultMeasureAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cDefaultMeasureDefaultMeasureKeyword_2_0_0 = (Keyword)cDefaultMeasureAssignment_2_0.eContents().get(0);
+		private final Assignment cDefaultMeasureValueAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cDefaultMeasureValueAssignment_2_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cCubeTypeEntityAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cCubeTypeEntityCubeTypeEntityParserRuleCall_4_0 = (RuleCall)cCubeTypeEntityAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//CubeType:
+		//	"cube" name=ID (defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)? "{" cubeTypeEntity=CubeTypeEntity "}";
+		public ParserRule getRule() { return rule; }
+
+		//"cube" name=ID (defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)? "{" cubeTypeEntity=CubeTypeEntity "}"
+		public Group getGroup() { return cGroup; }
+
+		//"cube"
+		public Keyword getCubeKeyword_0() { return cCubeKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//(defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//defaultMeasure?="defaultMeasure"
+		public Assignment getDefaultMeasureAssignment_2_0() { return cDefaultMeasureAssignment_2_0; }
+
+		//"defaultMeasure"
+		public Keyword getDefaultMeasureDefaultMeasureKeyword_2_0_0() { return cDefaultMeasureDefaultMeasureKeyword_2_0_0; }
+
+		//defaultMeasureValue=STRING
+		public Assignment getDefaultMeasureValueAssignment_2_1() { return cDefaultMeasureValueAssignment_2_1; }
+
+		//STRING
+		public RuleCall getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0() { return cDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+		//cubeTypeEntity=CubeTypeEntity
+		public Assignment getCubeTypeEntityAssignment_4() { return cCubeTypeEntityAssignment_4; }
+
+		//CubeTypeEntity
+		public RuleCall getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0() { return cCubeTypeEntityCubeTypeEntityParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class CubeDimensionUsageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimensionUsage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDimensionUsageKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cSourceValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cSourceValueCubeDimensionCrossReference_1_0 = (CrossReference)cSourceValueAssignment_1.eContents().get(0);
+		private final RuleCall cSourceValueCubeDimensionIDTerminalRuleCall_1_0_1 = (RuleCall)cSourceValueCubeDimensionCrossReference_1_0.eContents().get(1);
+		private final Keyword cOverKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cOverValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cOverValueLEntityFeatureCrossReference_3_0 = (CrossReference)cOverValueAssignment_3.eContents().get(0);
+		private final RuleCall cOverValueLEntityFeatureLFQNParserRuleCall_3_0_1 = (RuleCall)cOverValueLEntityFeatureCrossReference_3_0.eContents().get(1);
+		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//CubeDimensionUsage:
+		//	"dimensionUsage" sourceValue=[CubeDimension] "over" overValue=[entity::LEntityFeature|LFQN] ";";
+		public ParserRule getRule() { return rule; }
+
+		//"dimensionUsage" sourceValue=[CubeDimension] "over" overValue=[entity::LEntityFeature|LFQN] ";"
+		public Group getGroup() { return cGroup; }
+
+		//"dimensionUsage"
+		public Keyword getDimensionUsageKeyword_0() { return cDimensionUsageKeyword_0; }
+
+		//sourceValue=[CubeDimension]
+		public Assignment getSourceValueAssignment_1() { return cSourceValueAssignment_1; }
+
+		//[CubeDimension]
+		public CrossReference getSourceValueCubeDimensionCrossReference_1_0() { return cSourceValueCubeDimensionCrossReference_1_0; }
+
+		//ID
+		public RuleCall getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1() { return cSourceValueCubeDimensionIDTerminalRuleCall_1_0_1; }
+
+		//"over"
+		public Keyword getOverKeyword_2() { return cOverKeyword_2; }
+
+		//overValue=[entity::LEntityFeature|LFQN]
+		public Assignment getOverValueAssignment_3() { return cOverValueAssignment_3; }
+
+		//[entity::LEntityFeature|LFQN]
+		public CrossReference getOverValueLEntityFeatureCrossReference_3_0() { return cOverValueLEntityFeatureCrossReference_3_0; }
+
+		//LFQN
+		public RuleCall getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1() { return cOverValueLEntityFeatureLFQNParserRuleCall_3_0_1; }
+
+		//";"
+		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
+	}
+
+	public class CubeDimensionElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimension");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDimensionKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Assignment cTypeTimeAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final Keyword cTypeTimeTypeTimeKeyword_2_0 = (Keyword)cTypeTimeAssignment_2.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cHierarchiesAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cHierarchiesCubeHierarchyParserRuleCall_4_0 = (RuleCall)cHierarchiesAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//CubeDimension:
+		//	"dimension" name=TRANSLATABLEID typeTime?="typeTime"? "{" hierarchies+=CubeHierarchy* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"dimension" name=TRANSLATABLEID typeTime?="typeTime"? "{" hierarchies+=CubeHierarchy* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"dimension"
+		public Keyword getDimensionKeyword_0() { return cDimensionKeyword_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
+
+		//typeTime?="typeTime"?
+		public Assignment getTypeTimeAssignment_2() { return cTypeTimeAssignment_2; }
+
+		//"typeTime"
+		public Keyword getTypeTimeTypeTimeKeyword_2_0() { return cTypeTimeTypeTimeKeyword_2_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+		//hierarchies+=CubeHierarchy*
+		public Assignment getHierarchiesAssignment_4() { return cHierarchiesAssignment_4; }
+
+		//CubeHierarchy
+		public RuleCall getHierarchiesCubeHierarchyParserRuleCall_4_0() { return cHierarchiesCubeHierarchyParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class CubeHierarchyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeHierarchy");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cCubeHierarchyAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cHierarchyKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Assignment cHasAllAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final Keyword cHasAllHasAllKeyword_3_0 = (Keyword)cHasAllAssignment_3.eContents().get(0);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Assignment cAllMemberNameAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
+		private final Keyword cAllMemberNameAllMemberNameKeyword_4_0_0 = (Keyword)cAllMemberNameAssignment_4_0.eContents().get(0);
+		private final Assignment cAllMemberNameValueAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final RuleCall cAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0 = (RuleCall)cAllMemberNameValueAssignment_4_1.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Assignment cDefaultMemberAssignment_5_0 = (Assignment)cGroup_5.eContents().get(0);
+		private final Keyword cDefaultMemberDefaultMemberKeyword_5_0_0 = (Keyword)cDefaultMemberAssignment_5_0.eContents().get(0);
+		private final Assignment cDefaultMemberValueAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final RuleCall cDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0 = (RuleCall)cDefaultMemberValueAssignment_5_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		private final Assignment cCubeDimEntityAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cCubeDimEntityCubeDimensionEntityParserRuleCall_7_0 = (RuleCall)cCubeDimEntityAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//CubeHierarchy:
+		//	{CubeHierarchy} "hierarchy" name=TRANSLATABLEID? hasAll?="hasAll"? (allMemberName?="allMemberName="
+		//	allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)? "{"
+		//	cubeDimEntity=CubeDimensionEntity "}";
+		public ParserRule getRule() { return rule; }
+
+		//{CubeHierarchy} "hierarchy" name=TRANSLATABLEID? hasAll?="hasAll"? (allMemberName?="allMemberName="
+		//allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)? "{"
+		//cubeDimEntity=CubeDimensionEntity "}"
+		public Group getGroup() { return cGroup; }
+
+		//{CubeHierarchy}
+		public Action getCubeHierarchyAction_0() { return cCubeHierarchyAction_0; }
+
+		//"hierarchy"
+		public Keyword getHierarchyKeyword_1() { return cHierarchyKeyword_1; }
+
+		//name=TRANSLATABLEID?
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
+
+		//hasAll?="hasAll"?
+		public Assignment getHasAllAssignment_3() { return cHasAllAssignment_3; }
+
+		//"hasAll"
+		public Keyword getHasAllHasAllKeyword_3_0() { return cHasAllHasAllKeyword_3_0; }
+
+		//(allMemberName?="allMemberName=" allMemberNameValue=TRANSLATABLESTRING)?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//allMemberName?="allMemberName="
+		public Assignment getAllMemberNameAssignment_4_0() { return cAllMemberNameAssignment_4_0; }
+
+		//"allMemberName="
+		public Keyword getAllMemberNameAllMemberNameKeyword_4_0_0() { return cAllMemberNameAllMemberNameKeyword_4_0_0; }
+
+		//allMemberNameValue=TRANSLATABLESTRING
+		public Assignment getAllMemberNameValueAssignment_4_1() { return cAllMemberNameValueAssignment_4_1; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0() { return cAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0; }
+
+		//(defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//defaultMember?="defaultMember="
+		public Assignment getDefaultMemberAssignment_5_0() { return cDefaultMemberAssignment_5_0; }
+
+		//"defaultMember="
+		public Keyword getDefaultMemberDefaultMemberKeyword_5_0_0() { return cDefaultMemberDefaultMemberKeyword_5_0_0; }
+
+		//defaultMemberValue=TRANSLATABLESTRING
+		public Assignment getDefaultMemberValueAssignment_5_1() { return cDefaultMemberValueAssignment_5_1; }
+
+		//TRANSLATABLESTRING
+		public RuleCall getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0() { return cDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
+
+		//cubeDimEntity=CubeDimensionEntity
+		public Assignment getCubeDimEntityAssignment_7() { return cCubeDimEntityAssignment_7; }
+
+		//CubeDimensionEntity
+		public RuleCall getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0() { return cCubeDimEntityCubeDimensionEntityParserRuleCall_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class CubeEntityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeEntity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cEntityKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cEntityValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final CrossReference cEntityValueLEntityCrossReference_1_0 = (CrossReference)cEntityValueAssignment_1.eContents().get(0);
+		private final RuleCall cEntityValueLEntityLFQNParserRuleCall_1_0_1 = (RuleCall)cEntityValueLEntityCrossReference_1_0.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Assignment cKeyAssignment_2_0 = (Assignment)cGroup_2.eContents().get(0);
+		private final Keyword cKeyKeyKeyword_2_0_0 = (Keyword)cKeyAssignment_2_0.eContents().get(0);
+		private final Assignment cKeyValueAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final CrossReference cKeyValueLEntityFeatureCrossReference_2_1_0 = (CrossReference)cKeyValueAssignment_2_1.eContents().get(0);
+		private final RuleCall cKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1 = (RuleCall)cKeyValueLEntityFeatureCrossReference_2_1_0.eContents().get(1);
+		
+		//CubeEntity:
+		//	"entity" entityValue=[entity::LEntity|LFQN] (key?="key=" keyValue=[entity::LEntityFeature|LFQN])?;
+		public ParserRule getRule() { return rule; }
+
+		//"entity" entityValue=[entity::LEntity|LFQN] (key?="key=" keyValue=[entity::LEntityFeature|LFQN])?
+		public Group getGroup() { return cGroup; }
+
+		//"entity"
+		public Keyword getEntityKeyword_0() { return cEntityKeyword_0; }
+
+		//entityValue=[entity::LEntity|LFQN]
+		public Assignment getEntityValueAssignment_1() { return cEntityValueAssignment_1; }
+
+		//[entity::LEntity|LFQN]
+		public CrossReference getEntityValueLEntityCrossReference_1_0() { return cEntityValueLEntityCrossReference_1_0; }
+
+		//LFQN
+		public RuleCall getEntityValueLEntityLFQNParserRuleCall_1_0_1() { return cEntityValueLEntityLFQNParserRuleCall_1_0_1; }
+
+		//(key?="key=" keyValue=[entity::LEntityFeature|LFQN])?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//key?="key="
+		public Assignment getKeyAssignment_2_0() { return cKeyAssignment_2_0; }
+
+		//"key="
+		public Keyword getKeyKeyKeyword_2_0_0() { return cKeyKeyKeyword_2_0_0; }
+
+		//keyValue=[entity::LEntityFeature|LFQN]
+		public Assignment getKeyValueAssignment_2_1() { return cKeyValueAssignment_2_1; }
+
+		//[entity::LEntityFeature|LFQN]
+		public CrossReference getKeyValueLEntityFeatureCrossReference_2_1_0() { return cKeyValueLEntityFeatureCrossReference_2_1_0; }
+
+		//LFQN
+		public RuleCall getKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1() { return cKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1; }
+	}
+
+	public class CubeTypeEntityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeTypeEntity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cEntityRefAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cEntityRefCubeEntityParserRuleCall_0_0 = (RuleCall)cEntityRefAssignment_0.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cDimensionUsagesAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cDimensionUsagesCubeDimensionUsageParserRuleCall_2_0 = (RuleCall)cDimensionUsagesAssignment_2.eContents().get(0);
+		private final Assignment cMeasuresAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMeasuresCubeMeasureParserRuleCall_3_0 = (RuleCall)cMeasuresAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//CubeTypeEntity:
+		//	entityRef=CubeEntity "{" dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* "}";
+		public ParserRule getRule() { return rule; }
+
+		//entityRef=CubeEntity "{" dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* "}"
+		public Group getGroup() { return cGroup; }
+
+		//entityRef=CubeEntity
+		public Assignment getEntityRefAssignment_0() { return cEntityRefAssignment_0; }
+
+		//CubeEntity
+		public RuleCall getEntityRefCubeEntityParserRuleCall_0_0() { return cEntityRefCubeEntityParserRuleCall_0_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//dimensionUsages+=CubeDimensionUsage*
+		public Assignment getDimensionUsagesAssignment_2() { return cDimensionUsagesAssignment_2; }
+
+		//CubeDimensionUsage
+		public RuleCall getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0() { return cDimensionUsagesCubeDimensionUsageParserRuleCall_2_0; }
+
+		//measures+=CubeMeasure*
+		public Assignment getMeasuresAssignment_3() { return cMeasuresAssignment_3; }
+
+		//CubeMeasure
+		public RuleCall getMeasuresCubeMeasureParserRuleCall_3_0() { return cMeasuresCubeMeasureParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class CubeDimensionEntityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimensionEntity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cCubeDimensionEntityAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cEntityRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cEntityRefCubeEntityParserRuleCall_1_0 = (RuleCall)cEntityRefAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cHierarchLevelsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cHierarchLevelsCubeLevelParserRuleCall_3_0 = (RuleCall)cHierarchLevelsAssignment_3.eContents().get(0);
+		private final Assignment cDimEntityAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cDimEntityCubeDimensionEntityEntityParserRuleCall_4_0 = (RuleCall)cDimEntityAssignment_4.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//CubeDimensionEntity:
+		//	{CubeDimensionEntity} entityRef=CubeEntity "{" hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{CubeDimensionEntity} entityRef=CubeEntity "{" hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{CubeDimensionEntity}
+		public Action getCubeDimensionEntityAction_0() { return cCubeDimensionEntityAction_0; }
+
+		//entityRef=CubeEntity
+		public Assignment getEntityRefAssignment_1() { return cEntityRefAssignment_1; }
+
+		//CubeEntity
+		public RuleCall getEntityRefCubeEntityParserRuleCall_1_0() { return cEntityRefCubeEntityParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//hierarchLevels+=CubeLevel*
+		public Assignment getHierarchLevelsAssignment_3() { return cHierarchLevelsAssignment_3; }
+
+		//CubeLevel
+		public RuleCall getHierarchLevelsCubeLevelParserRuleCall_3_0() { return cHierarchLevelsCubeLevelParserRuleCall_3_0; }
+
+		//dimEntity=CubeDimensionEntityEntity?
+		public Assignment getDimEntityAssignment_4() { return cDimEntityAssignment_4; }
+
+		//CubeDimensionEntityEntity
+		public RuleCall getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0() { return cDimEntityCubeDimensionEntityEntityParserRuleCall_4_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class CubeDimensionEntityEntityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimensionEntityEntity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cCubeDimensionEntityEntityAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cEntityRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cEntityRefCubeEntityParserRuleCall_1_0 = (RuleCall)cEntityRefAssignment_1.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Keyword cOverKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cOverValueAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cOverValueLEntityFeatureCrossReference_4_0 = (CrossReference)cOverValueAssignment_4.eContents().get(0);
+		private final RuleCall cOverValueLEntityFeatureLFQNParserRuleCall_4_0_1 = (RuleCall)cOverValueLEntityFeatureCrossReference_4_0.eContents().get(1);
+		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cHierarchLevelsAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cHierarchLevelsCubeLevelParserRuleCall_6_0 = (RuleCall)cHierarchLevelsAssignment_6.eContents().get(0);
+		private final Assignment cDimEntityAssignment_7 = (Assignment)cGroup.eContents().get(7);
+		private final RuleCall cDimEntityCubeDimensionEntityEntityParserRuleCall_7_0 = (RuleCall)cDimEntityAssignment_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		
+		//CubeDimensionEntityEntity:
+		//	{CubeDimensionEntityEntity} entityRef=CubeEntity "{" "over" overValue=[entity::LEntityFeature|LFQN] ";"
+		//	hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
+		public ParserRule getRule() { return rule; }
+
+		//{CubeDimensionEntityEntity} entityRef=CubeEntity "{" "over" overValue=[entity::LEntityFeature|LFQN] ";"
+		//hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}"
+		public Group getGroup() { return cGroup; }
+
+		//{CubeDimensionEntityEntity}
+		public Action getCubeDimensionEntityEntityAction_0() { return cCubeDimensionEntityEntityAction_0; }
+
+		//entityRef=CubeEntity
+		public Assignment getEntityRefAssignment_1() { return cEntityRefAssignment_1; }
+
+		//CubeEntity
+		public RuleCall getEntityRefCubeEntityParserRuleCall_1_0() { return cEntityRefCubeEntityParserRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//"over"
+		public Keyword getOverKeyword_3() { return cOverKeyword_3; }
+
+		//overValue=[entity::LEntityFeature|LFQN]
+		public Assignment getOverValueAssignment_4() { return cOverValueAssignment_4; }
+
+		//[entity::LEntityFeature|LFQN]
+		public CrossReference getOverValueLEntityFeatureCrossReference_4_0() { return cOverValueLEntityFeatureCrossReference_4_0; }
+
+		//LFQN
+		public RuleCall getOverValueLEntityFeatureLFQNParserRuleCall_4_0_1() { return cOverValueLEntityFeatureLFQNParserRuleCall_4_0_1; }
+
+		//";"
+		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
+
+		//hierarchLevels+=CubeLevel*
+		public Assignment getHierarchLevelsAssignment_6() { return cHierarchLevelsAssignment_6; }
+
+		//CubeLevel
+		public RuleCall getHierarchLevelsCubeLevelParserRuleCall_6_0() { return cHierarchLevelsCubeLevelParserRuleCall_6_0; }
+
+		//dimEntity=CubeDimensionEntityEntity?
+		public Assignment getDimEntityAssignment_7() { return cDimEntityAssignment_7; }
+
+		//CubeDimensionEntityEntity
+		public RuleCall getDimEntityCubeDimensionEntityEntityParserRuleCall_7_0() { return cDimEntityCubeDimensionEntityEntityParserRuleCall_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+	}
+
+	public class CubeLevelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevel");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLevelKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cColumnKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cLevelColValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cLevelColValueLEntityFeatureCrossReference_3_0 = (CrossReference)cLevelColValueAssignment_3.eContents().get(0);
+		private final RuleCall cLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1 = (RuleCall)cLevelColValueLEntityFeatureCrossReference_3_0.eContents().get(1);
+		private final Assignment cUniqueMembersAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final Keyword cUniqueMembersUniqueMembersKeyword_4_0 = (Keyword)cUniqueMembersAssignment_4.eContents().get(0);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Assignment cLevelTypeAssignment_5_0 = (Assignment)cGroup_5.eContents().get(0);
+		private final Keyword cLevelTypeLevelTypeKeyword_5_0_0 = (Keyword)cLevelTypeAssignment_5_0.eContents().get(0);
+		private final Assignment cLevelTypeValueAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final RuleCall cLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0 = (RuleCall)cLevelTypeValueAssignment_5_1.eContents().get(0);
+		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
+		private final Keyword cSemicolonKeyword_6_0 = (Keyword)cAlternatives_6.eContents().get(0);
+		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
+		private final Assignment cPropertiesAssignment_6_1_1 = (Assignment)cGroup_6_1.eContents().get(1);
+		private final RuleCall cPropertiesCubeLevelPropParserRuleCall_6_1_1_0 = (RuleCall)cPropertiesAssignment_6_1_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_1_2 = (Keyword)cGroup_6_1.eContents().get(2);
+		
+		//CubeLevel:
+		//	"level" name=TRANSLATABLEID "column=" levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?="uniqueMembers"?
+		//	(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)? (";" | "{" properties+=CubeLevelProp* "}");
+		public ParserRule getRule() { return rule; }
+
+		//"level" name=TRANSLATABLEID "column=" levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?="uniqueMembers"?
+		//(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)? (";" | "{" properties+=CubeLevelProp* "}")
+		public Group getGroup() { return cGroup; }
+
+		//"level"
+		public Keyword getLevelKeyword_0() { return cLevelKeyword_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
+
+		//"column="
+		public Keyword getColumnKeyword_2() { return cColumnKeyword_2; }
+
+		//levelColValue=[entity::LEntityFeature|LFQN]
+		public Assignment getLevelColValueAssignment_3() { return cLevelColValueAssignment_3; }
+
+		//[entity::LEntityFeature|LFQN]
+		public CrossReference getLevelColValueLEntityFeatureCrossReference_3_0() { return cLevelColValueLEntityFeatureCrossReference_3_0; }
+
+		//LFQN
+		public RuleCall getLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1() { return cLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1; }
+
+		//uniqueMembers?="uniqueMembers"?
+		public Assignment getUniqueMembersAssignment_4() { return cUniqueMembersAssignment_4; }
+
+		//"uniqueMembers"
+		public Keyword getUniqueMembersUniqueMembersKeyword_4_0() { return cUniqueMembersUniqueMembersKeyword_4_0; }
+
+		//(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)?
+		public Group getGroup_5() { return cGroup_5; }
+
+		//levelType?="levelType="
+		public Assignment getLevelTypeAssignment_5_0() { return cLevelTypeAssignment_5_0; }
+
+		//"levelType="
+		public Keyword getLevelTypeLevelTypeKeyword_5_0_0() { return cLevelTypeLevelTypeKeyword_5_0_0; }
+
+		//levelTypeValue=CubeLevelLevelType
+		public Assignment getLevelTypeValueAssignment_5_1() { return cLevelTypeValueAssignment_5_1; }
+
+		//CubeLevelLevelType
+		public RuleCall getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0() { return cLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0; }
+
+		//";" | "{" properties+=CubeLevelProp* "}"
+		public Alternatives getAlternatives_6() { return cAlternatives_6; }
+
+		//";"
+		public Keyword getSemicolonKeyword_6_0() { return cSemicolonKeyword_6_0; }
+
+		//"{" properties+=CubeLevelProp* "}"
+		public Group getGroup_6_1() { return cGroup_6_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_6_1_0() { return cLeftCurlyBracketKeyword_6_1_0; }
+
+		//properties+=CubeLevelProp*
+		public Assignment getPropertiesAssignment_6_1_1() { return cPropertiesAssignment_6_1_1; }
+
+		//CubeLevelProp
+		public RuleCall getPropertiesCubeLevelPropParserRuleCall_6_1_1_0() { return cPropertiesCubeLevelPropParserRuleCall_6_1_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6_1_2() { return cRightCurlyBracketKeyword_6_1_2; }
+	}
+
+	public class CubeLevelPropElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevelProp");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cPropertyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cColumnKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cLevelPropColValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final CrossReference cLevelPropColValueLEntityFeatureCrossReference_3_0 = (CrossReference)cLevelPropColValueAssignment_3.eContents().get(0);
+		private final RuleCall cLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1 = (RuleCall)cLevelPropColValueLEntityFeatureCrossReference_3_0.eContents().get(1);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Assignment cTypeAssignment_4_0 = (Assignment)cGroup_4.eContents().get(0);
+		private final Keyword cTypeTypeKeyword_4_0_0 = (Keyword)cTypeAssignment_4_0.eContents().get(0);
+		private final Assignment cTypeValueAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final RuleCall cTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0 = (RuleCall)cTypeValueAssignment_4_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//CubeLevelProp:
+		//	"property" name=TRANSLATABLEID "column=" levelPropColValue=[entity::LEntityFeature|LFQN] (type?="type="
+		//	typeValue=CubeLevelPropType)? ";";
+		public ParserRule getRule() { return rule; }
+
+		//"property" name=TRANSLATABLEID "column=" levelPropColValue=[entity::LEntityFeature|LFQN] (type?="type="
+		//typeValue=CubeLevelPropType)? ";"
+		public Group getGroup() { return cGroup; }
+
+		//"property"
+		public Keyword getPropertyKeyword_0() { return cPropertyKeyword_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
+
+		//"column="
+		public Keyword getColumnKeyword_2() { return cColumnKeyword_2; }
+
+		//levelPropColValue=[entity::LEntityFeature|LFQN]
+		public Assignment getLevelPropColValueAssignment_3() { return cLevelPropColValueAssignment_3; }
+
+		//[entity::LEntityFeature|LFQN]
+		public CrossReference getLevelPropColValueLEntityFeatureCrossReference_3_0() { return cLevelPropColValueLEntityFeatureCrossReference_3_0; }
+
+		//LFQN
+		public RuleCall getLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1() { return cLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1; }
+
+		//(type?="type=" typeValue=CubeLevelPropType)?
+		public Group getGroup_4() { return cGroup_4; }
+
+		//type?="type="
+		public Assignment getTypeAssignment_4_0() { return cTypeAssignment_4_0; }
+
+		//"type="
+		public Keyword getTypeTypeKeyword_4_0_0() { return cTypeTypeKeyword_4_0_0; }
+
+		//typeValue=CubeLevelPropType
+		public Assignment getTypeValueAssignment_4_1() { return cTypeValueAssignment_4_1; }
+
+		//CubeLevelPropType
+		public RuleCall getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0() { return cTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0; }
+
+		//";"
+		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
+	}
+
+	public class CubeMeasureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeMeasure");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cMeasureKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Assignment cAggregatorAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cAggregatorCubeAggregatorEnumEnumRuleCall_2_0 = (RuleCall)cAggregatorAssignment_2.eContents().get(0);
+		private final Keyword cColumnKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cMeasureColAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cMeasureColLEntityFeatureCrossReference_4_0 = (CrossReference)cMeasureColAssignment_4.eContents().get(0);
+		private final RuleCall cMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1 = (RuleCall)cMeasureColLEntityFeatureCrossReference_4_0.eContents().get(1);
+		private final Assignment cNotVisibleAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final Keyword cNotVisibleNotVisibleKeyword_5_0 = (Keyword)cNotVisibleAssignment_5.eContents().get(0);
+		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//CubeMeasure:
+		//	"measure" name=TRANSLATABLEID aggregator=CubeAggregatorEnum "column=" measureCol=[entity::LEntityFeature|LFQN]
+		//	notVisible?="notVisible"? ";";
+		public ParserRule getRule() { return rule; }
+
+		//"measure" name=TRANSLATABLEID aggregator=CubeAggregatorEnum "column=" measureCol=[entity::LEntityFeature|LFQN]
+		//notVisible?="notVisible"? ";"
+		public Group getGroup() { return cGroup; }
+
+		//"measure"
+		public Keyword getMeasureKeyword_0() { return cMeasureKeyword_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
+
+		//aggregator=CubeAggregatorEnum
+		public Assignment getAggregatorAssignment_2() { return cAggregatorAssignment_2; }
+
+		//CubeAggregatorEnum
+		public RuleCall getAggregatorCubeAggregatorEnumEnumRuleCall_2_0() { return cAggregatorCubeAggregatorEnumEnumRuleCall_2_0; }
+
+		//"column="
+		public Keyword getColumnKeyword_3() { return cColumnKeyword_3; }
+
+		//measureCol=[entity::LEntityFeature|LFQN]
+		public Assignment getMeasureColAssignment_4() { return cMeasureColAssignment_4; }
+
+		//[entity::LEntityFeature|LFQN]
+		public CrossReference getMeasureColLEntityFeatureCrossReference_4_0() { return cMeasureColLEntityFeatureCrossReference_4_0; }
+
+		//LFQN
+		public RuleCall getMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1() { return cMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1; }
+
+		//notVisible?="notVisible"?
+		public Assignment getNotVisibleAssignment_5() { return cNotVisibleAssignment_5; }
+
+		//"notVisible"
+		public Keyword getNotVisibleNotVisibleKeyword_5_0() { return cNotVisibleNotVisibleKeyword_5_0; }
+
+		//";"
+		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
+	}
+
+	public class ImportElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Import");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cImportKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cImportedNamespaceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		
+		//Import returns LImport:
+		//	"import" importedNamespace=CubeQualifiedNameWithWildCard ";";
+		public ParserRule getRule() { return rule; }
+
+		//"import" importedNamespace=CubeQualifiedNameWithWildCard ";"
+		public Group getGroup() { return cGroup; }
+
+		//"import"
+		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
+
+		//importedNamespace=CubeQualifiedNameWithWildCard
+		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
+
+		//CubeQualifiedNameWithWildCard
+		public RuleCall getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0; }
+
+		//";"
+		public Keyword getSemicolonKeyword_2() { return cSemicolonKeyword_2; }
+	}
+
+	public class CubeQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeQualifiedNameWithWildCard");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cQualifiedNameParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final Keyword cAsteriskKeyword_1_1 = (Keyword)cGroup_1.eContents().get(1);
+		
+		//CubeQualifiedNameWithWildCard:
+		//	QualifiedName ("." "*")?;
+		public ParserRule getRule() { return rule; }
+
+		//QualifiedName ("." "*")?
+		public Group getGroup() { return cGroup; }
+
+		//QualifiedName
+		public RuleCall getQualifiedNameParserRuleCall_0() { return cQualifiedNameParserRuleCall_0; }
+
+		//("." "*")?
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//"*"
+		public Keyword getAsteriskKeyword_1_1() { return cAsteriskKeyword_1_1; }
+	}
+
+	public class QualifiedNameElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "QualifiedName");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cValidIDParserRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cValidIDParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//QualifiedName:
+		//	ValidID ("." ValidID)*;
+		public ParserRule getRule() { return rule; }
+
+		//ValidID ("." ValidID)*
+		public Group getGroup() { return cGroup; }
+
+		//ValidID
+		public RuleCall getValidIDParserRuleCall_0() { return cValidIDParserRuleCall_0; }
+
+		//(=> "." ValidID)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//=> "."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//ValidID
+		public RuleCall getValidIDParserRuleCall_1_1() { return cValidIDParserRuleCall_1_1; }
+	}
+
+	public class ValidIDElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidID");
+		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//ValidID:
+		//	ID;
+		public ParserRule getRule() { return rule; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
+	}
+
+	public class LFQNElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LFQN");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//LFQN:
+		//	ID ("." ID)*;
+		public ParserRule getRule() { return rule; }
+
+		//ID ("." ID)*
+		public Group getGroup() { return cGroup; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
+
+		//("." ID)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
+	}
+
+	public class TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLEID");
+		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//TRANSLATABLEID:
+		//	ID;
+		public ParserRule getRule() { return rule; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
+	}
+
+	public class TRANSLATABLESTRINGElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLESTRING");
+		private final RuleCall cSTRINGTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//TRANSLATABLESTRING:
+		//	STRING;
+		public ParserRule getRule() { return rule; }
+
+		//STRING
+		public RuleCall getSTRINGTerminalRuleCall() { return cSTRINGTerminalRuleCall; }
+	}
+	
+	
+	public class CubeAggregatorEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CubeAggregatorEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cSUMEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cSUMSumKeyword_0_0 = (Keyword)cSUMEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cCOUNTEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cCOUNTCountKeyword_1_0 = (Keyword)cCOUNTEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cMINEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cMINMinKeyword_2_0 = (Keyword)cMINEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cMAXEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cMAXMaxKeyword_3_0 = (Keyword)cMAXEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cAVGEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cAVGAvgKeyword_4_0 = (Keyword)cAVGEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cDSCEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cDSCDistinctCountKeyword_5_0 = (Keyword)cDSCEnumLiteralDeclaration_5.eContents().get(0);
+		
+		//enum CubeAggregatorEnum:
+		//	SUM="sum" | COUNT="count" | MIN="min" | MAX="max" | AVG="avg" | DSC="distinct-count";
+		public EnumRule getRule() { return rule; }
+
+		//SUM="sum" | COUNT="count" | MIN="min" | MAX="max" | AVG="avg" | DSC="distinct-count"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//SUM="sum"
+		public EnumLiteralDeclaration getSUMEnumLiteralDeclaration_0() { return cSUMEnumLiteralDeclaration_0; }
+
+		//"sum"
+		public Keyword getSUMSumKeyword_0_0() { return cSUMSumKeyword_0_0; }
+
+		//COUNT="count"
+		public EnumLiteralDeclaration getCOUNTEnumLiteralDeclaration_1() { return cCOUNTEnumLiteralDeclaration_1; }
+
+		//"count"
+		public Keyword getCOUNTCountKeyword_1_0() { return cCOUNTCountKeyword_1_0; }
+
+		//MIN="min"
+		public EnumLiteralDeclaration getMINEnumLiteralDeclaration_2() { return cMINEnumLiteralDeclaration_2; }
+
+		//"min"
+		public Keyword getMINMinKeyword_2_0() { return cMINMinKeyword_2_0; }
+
+		//MAX="max"
+		public EnumLiteralDeclaration getMAXEnumLiteralDeclaration_3() { return cMAXEnumLiteralDeclaration_3; }
+
+		//"max"
+		public Keyword getMAXMaxKeyword_3_0() { return cMAXMaxKeyword_3_0; }
+
+		//AVG="avg"
+		public EnumLiteralDeclaration getAVGEnumLiteralDeclaration_4() { return cAVGEnumLiteralDeclaration_4; }
+
+		//"avg"
+		public Keyword getAVGAvgKeyword_4_0() { return cAVGAvgKeyword_4_0; }
+
+		//DSC="distinct-count"
+		public EnumLiteralDeclaration getDSCEnumLiteralDeclaration_5() { return cDSCEnumLiteralDeclaration_5; }
+
+		//"distinct-count"
+		public Keyword getDSCDistinctCountKeyword_5_0() { return cDSCDistinctCountKeyword_5_0; }
+	}
+
+	public class CubeLevelPropTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevelPropType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cSTRINGEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cSTRINGStringKeyword_0_0 = (Keyword)cSTRINGEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cNUMERICEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cNUMERICNumericKeyword_1_0 = (Keyword)cNUMERICEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cINTEGEREnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cINTEGERIntegerKeyword_2_0 = (Keyword)cINTEGEREnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cBOOLEANEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cBOOLEANBooleanKeyword_3_0 = (Keyword)cBOOLEANEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cDATEEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cDATEDateKeyword_4_0 = (Keyword)cDATEEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cTIMEEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cTIMETimeKeyword_5_0 = (Keyword)cTIMEEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cTIMESTAMPEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cTIMESTAMPTimestampKeyword_6_0 = (Keyword)cTIMESTAMPEnumLiteralDeclaration_6.eContents().get(0);
+		
+		//enum CubeLevelPropType:
+		//	STRING="String" | NUMERIC="Numeric" | INTEGER="Integer" | BOOLEAN="Boolean" | DATE="Date" | TIME="Time" |
+		//	TIMESTAMP="Timestamp";
+		public EnumRule getRule() { return rule; }
+
+		//STRING="String" | NUMERIC="Numeric" | INTEGER="Integer" | BOOLEAN="Boolean" | DATE="Date" | TIME="Time" |
+		//TIMESTAMP="Timestamp"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//STRING="String"
+		public EnumLiteralDeclaration getSTRINGEnumLiteralDeclaration_0() { return cSTRINGEnumLiteralDeclaration_0; }
+
+		//"String"
+		public Keyword getSTRINGStringKeyword_0_0() { return cSTRINGStringKeyword_0_0; }
+
+		//NUMERIC="Numeric"
+		public EnumLiteralDeclaration getNUMERICEnumLiteralDeclaration_1() { return cNUMERICEnumLiteralDeclaration_1; }
+
+		//"Numeric"
+		public Keyword getNUMERICNumericKeyword_1_0() { return cNUMERICNumericKeyword_1_0; }
+
+		//INTEGER="Integer"
+		public EnumLiteralDeclaration getINTEGEREnumLiteralDeclaration_2() { return cINTEGEREnumLiteralDeclaration_2; }
+
+		//"Integer"
+		public Keyword getINTEGERIntegerKeyword_2_0() { return cINTEGERIntegerKeyword_2_0; }
+
+		//BOOLEAN="Boolean"
+		public EnumLiteralDeclaration getBOOLEANEnumLiteralDeclaration_3() { return cBOOLEANEnumLiteralDeclaration_3; }
+
+		//"Boolean"
+		public Keyword getBOOLEANBooleanKeyword_3_0() { return cBOOLEANBooleanKeyword_3_0; }
+
+		//DATE="Date"
+		public EnumLiteralDeclaration getDATEEnumLiteralDeclaration_4() { return cDATEEnumLiteralDeclaration_4; }
+
+		//"Date"
+		public Keyword getDATEDateKeyword_4_0() { return cDATEDateKeyword_4_0; }
+
+		//TIME="Time"
+		public EnumLiteralDeclaration getTIMEEnumLiteralDeclaration_5() { return cTIMEEnumLiteralDeclaration_5; }
+
+		//"Time"
+		public Keyword getTIMETimeKeyword_5_0() { return cTIMETimeKeyword_5_0; }
+
+		//TIMESTAMP="Timestamp"
+		public EnumLiteralDeclaration getTIMESTAMPEnumLiteralDeclaration_6() { return cTIMESTAMPEnumLiteralDeclaration_6; }
+
+		//"Timestamp"
+		public Keyword getTIMESTAMPTimestampKeyword_6_0() { return cTIMESTAMPTimestampKeyword_6_0; }
+	}
+
+	public class CubeLevelLevelTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevelLevelType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cMDLEVEL_TYPE_TIMETimeKeyword_0_0 = (Keyword)cMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cMDLEVEL_TYPE_TIME_YEARSTimeYearsKeyword_1_0 = (Keyword)cMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cMDLEVEL_TYPE_TIME_HALF_YEARSTimeHalfYearsKeyword_2_0 = (Keyword)cMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cMDLEVEL_TYPE_TIME_QUARTERSTimeQuartersKeyword_3_0 = (Keyword)cMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cMDLEVEL_TYPE_TIME_MONTHSTimeMonthsKeyword_4_0 = (Keyword)cMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cMDLEVEL_TYPE_TIME_WEEKSTimeWeeksKeyword_5_0 = (Keyword)cMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cMDLEVEL_TYPE_TIME_DAYSTimeDaysKeyword_6_0 = (Keyword)cMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7 = (EnumLiteralDeclaration)cAlternatives.eContents().get(7);
+		private final Keyword cMDLEVEL_TYPE_TIME_HOURSTimeHoursKeyword_7_0 = (Keyword)cMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8 = (EnumLiteralDeclaration)cAlternatives.eContents().get(8);
+		private final Keyword cMDLEVEL_TYPE_TIME_MINUTESTimeMinutesKeyword_8_0 = (Keyword)cMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8.eContents().get(0);
+		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9 = (EnumLiteralDeclaration)cAlternatives.eContents().get(9);
+		private final Keyword cMDLEVEL_TYPE_TIME_SECONDSTimeSecondsKeyword_9_0 = (Keyword)cMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9.eContents().get(0);
+		
+		//enum CubeLevelLevelType:
+		//	MDLEVEL_TYPE_TIME="Time" | MDLEVEL_TYPE_TIME_YEARS="TimeYears" | MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears" |
+		//	MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters" | MDLEVEL_TYPE_TIME_MONTHS="TimeMonths" |
+		//	MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks" | MDLEVEL_TYPE_TIME_DAYS="TimeDays" | MDLEVEL_TYPE_TIME_HOURS="TimeHours" |
+		//	MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes" | MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds";
+		public EnumRule getRule() { return rule; }
+
+		//MDLEVEL_TYPE_TIME="Time" | MDLEVEL_TYPE_TIME_YEARS="TimeYears" | MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears" |
+		//MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters" | MDLEVEL_TYPE_TIME_MONTHS="TimeMonths" | MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks"
+		//| MDLEVEL_TYPE_TIME_DAYS="TimeDays" | MDLEVEL_TYPE_TIME_HOURS="TimeHours" | MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes" |
+		//MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//MDLEVEL_TYPE_TIME="Time"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0() { return cMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0; }
+
+		//"Time"
+		public Keyword getMDLEVEL_TYPE_TIMETimeKeyword_0_0() { return cMDLEVEL_TYPE_TIMETimeKeyword_0_0; }
+
+		//MDLEVEL_TYPE_TIME_YEARS="TimeYears"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1() { return cMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1; }
+
+		//"TimeYears"
+		public Keyword getMDLEVEL_TYPE_TIME_YEARSTimeYearsKeyword_1_0() { return cMDLEVEL_TYPE_TIME_YEARSTimeYearsKeyword_1_0; }
+
+		//MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2() { return cMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2; }
+
+		//"TimeHalfYears"
+		public Keyword getMDLEVEL_TYPE_TIME_HALF_YEARSTimeHalfYearsKeyword_2_0() { return cMDLEVEL_TYPE_TIME_HALF_YEARSTimeHalfYearsKeyword_2_0; }
+
+		//MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3() { return cMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3; }
+
+		//"TimeQuarters"
+		public Keyword getMDLEVEL_TYPE_TIME_QUARTERSTimeQuartersKeyword_3_0() { return cMDLEVEL_TYPE_TIME_QUARTERSTimeQuartersKeyword_3_0; }
+
+		//MDLEVEL_TYPE_TIME_MONTHS="TimeMonths"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4() { return cMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4; }
+
+		//"TimeMonths"
+		public Keyword getMDLEVEL_TYPE_TIME_MONTHSTimeMonthsKeyword_4_0() { return cMDLEVEL_TYPE_TIME_MONTHSTimeMonthsKeyword_4_0; }
+
+		//MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5() { return cMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5; }
+
+		//"TimeWeeks"
+		public Keyword getMDLEVEL_TYPE_TIME_WEEKSTimeWeeksKeyword_5_0() { return cMDLEVEL_TYPE_TIME_WEEKSTimeWeeksKeyword_5_0; }
+
+		//MDLEVEL_TYPE_TIME_DAYS="TimeDays"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6() { return cMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6; }
+
+		//"TimeDays"
+		public Keyword getMDLEVEL_TYPE_TIME_DAYSTimeDaysKeyword_6_0() { return cMDLEVEL_TYPE_TIME_DAYSTimeDaysKeyword_6_0; }
+
+		//MDLEVEL_TYPE_TIME_HOURS="TimeHours"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7() { return cMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7; }
+
+		//"TimeHours"
+		public Keyword getMDLEVEL_TYPE_TIME_HOURSTimeHoursKeyword_7_0() { return cMDLEVEL_TYPE_TIME_HOURSTimeHoursKeyword_7_0; }
+
+		//MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8() { return cMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8; }
+
+		//"TimeMinutes"
+		public Keyword getMDLEVEL_TYPE_TIME_MINUTESTimeMinutesKeyword_8_0() { return cMDLEVEL_TYPE_TIME_MINUTESTimeMinutesKeyword_8_0; }
+
+		//MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds"
+		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9() { return cMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9; }
+
+		//"TimeSeconds"
+		public Keyword getMDLEVEL_TYPE_TIME_SECONDSTimeSecondsKeyword_9_0() { return cMDLEVEL_TYPE_TIME_SECONDSTimeSecondsKeyword_9_0; }
+	}
+	
+	private final CubeModelElements pCubeModel;
+	private final CubePackageElements pCubePackage;
+	private final CubeTypeElements pCubeType;
+	private final CubeDimensionUsageElements pCubeDimensionUsage;
+	private final CubeDimensionElements pCubeDimension;
+	private final CubeHierarchyElements pCubeHierarchy;
+	private final CubeEntityElements pCubeEntity;
+	private final CubeTypeEntityElements pCubeTypeEntity;
+	private final CubeDimensionEntityElements pCubeDimensionEntity;
+	private final CubeDimensionEntityEntityElements pCubeDimensionEntityEntity;
+	private final CubeLevelElements pCubeLevel;
+	private final CubeLevelPropElements pCubeLevelProp;
+	private final CubeMeasureElements pCubeMeasure;
+	private final CubeAggregatorEnumElements unknownRuleCubeAggregatorEnum;
+	private final CubeLevelPropTypeElements unknownRuleCubeLevelPropType;
+	private final CubeLevelLevelTypeElements unknownRuleCubeLevelLevelType;
+	private final ImportElements pImport;
+	private final CubeQualifiedNameWithWildCardElements pCubeQualifiedNameWithWildCard;
+	private final QualifiedNameElements pQualifiedName;
+	private final ValidIDElements pValidID;
+	private final LFQNElements pLFQN;
+	private final TRANSLATABLEIDElements pTRANSLATABLEID;
+	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
+	
+	private final Grammar grammar;
+
+	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+
+	@Inject
+	public CubeDSLGrammarAccess(GrammarProvider grammarProvider,
+		XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
+		this.pCubeModel = new CubeModelElements();
+		this.pCubePackage = new CubePackageElements();
+		this.pCubeType = new CubeTypeElements();
+		this.pCubeDimensionUsage = new CubeDimensionUsageElements();
+		this.pCubeDimension = new CubeDimensionElements();
+		this.pCubeHierarchy = new CubeHierarchyElements();
+		this.pCubeEntity = new CubeEntityElements();
+		this.pCubeTypeEntity = new CubeTypeEntityElements();
+		this.pCubeDimensionEntity = new CubeDimensionEntityElements();
+		this.pCubeDimensionEntityEntity = new CubeDimensionEntityEntityElements();
+		this.pCubeLevel = new CubeLevelElements();
+		this.pCubeLevelProp = new CubeLevelPropElements();
+		this.pCubeMeasure = new CubeMeasureElements();
+		this.unknownRuleCubeAggregatorEnum = new CubeAggregatorEnumElements();
+		this.unknownRuleCubeLevelPropType = new CubeLevelPropTypeElements();
+		this.unknownRuleCubeLevelLevelType = new CubeLevelLevelTypeElements();
+		this.pImport = new ImportElements();
+		this.pCubeQualifiedNameWithWildCard = new CubeQualifiedNameWithWildCardElements();
+		this.pQualifiedName = new QualifiedNameElements();
+		this.pValidID = new ValidIDElements();
+		this.pLFQN = new LFQNElements();
+		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
+		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.xtext.cubedsl.CubeDSL".equals(grammar.getName())) {
+				return grammar;
+			}
+			List<Grammar> grammars = grammar.getUsedGrammars();
+			if (!grammars.isEmpty()) {
+				grammar = grammars.iterator().next();
+			} else {
+				return null;
+			}
+		}
+		return grammar;
+	}
+	
+	
+	public Grammar getGrammar() {
+		return grammar;
+	}
+	
+
+	public XbaseWithAnnotationsGrammarAccess getXbaseWithAnnotationsGrammarAccess() {
+		return gaXbaseWithAnnotations;
+	}
+
+	
+	//CubeModel:
+	//	{CubeModel} pckg=CubePackage;
+	public CubeModelElements getCubeModelAccess() {
+		return pCubeModel;
+	}
+	
+	public ParserRule getCubeModelRule() {
+		return getCubeModelAccess().getRule();
+	}
+
+	//CubePackage:
+	//	"package" name=QualifiedName ("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?;
+	public CubePackageElements getCubePackageAccess() {
+		return pCubePackage;
+	}
+	
+	public ParserRule getCubePackageRule() {
+		return getCubePackageAccess().getRule();
+	}
+
+	//CubeType:
+	//	"cube" name=ID (defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)? "{" cubeTypeEntity=CubeTypeEntity "}";
+	public CubeTypeElements getCubeTypeAccess() {
+		return pCubeType;
+	}
+	
+	public ParserRule getCubeTypeRule() {
+		return getCubeTypeAccess().getRule();
+	}
+
+	//CubeDimensionUsage:
+	//	"dimensionUsage" sourceValue=[CubeDimension] "over" overValue=[entity::LEntityFeature|LFQN] ";";
+	public CubeDimensionUsageElements getCubeDimensionUsageAccess() {
+		return pCubeDimensionUsage;
+	}
+	
+	public ParserRule getCubeDimensionUsageRule() {
+		return getCubeDimensionUsageAccess().getRule();
+	}
+
+	//CubeDimension:
+	//	"dimension" name=TRANSLATABLEID typeTime?="typeTime"? "{" hierarchies+=CubeHierarchy* "}";
+	public CubeDimensionElements getCubeDimensionAccess() {
+		return pCubeDimension;
+	}
+	
+	public ParserRule getCubeDimensionRule() {
+		return getCubeDimensionAccess().getRule();
+	}
+
+	//CubeHierarchy:
+	//	{CubeHierarchy} "hierarchy" name=TRANSLATABLEID? hasAll?="hasAll"? (allMemberName?="allMemberName="
+	//	allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)? "{"
+	//	cubeDimEntity=CubeDimensionEntity "}";
+	public CubeHierarchyElements getCubeHierarchyAccess() {
+		return pCubeHierarchy;
+	}
+	
+	public ParserRule getCubeHierarchyRule() {
+		return getCubeHierarchyAccess().getRule();
+	}
+
+	//CubeEntity:
+	//	"entity" entityValue=[entity::LEntity|LFQN] (key?="key=" keyValue=[entity::LEntityFeature|LFQN])?;
+	public CubeEntityElements getCubeEntityAccess() {
+		return pCubeEntity;
+	}
+	
+	public ParserRule getCubeEntityRule() {
+		return getCubeEntityAccess().getRule();
+	}
+
+	//CubeTypeEntity:
+	//	entityRef=CubeEntity "{" dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* "}";
+	public CubeTypeEntityElements getCubeTypeEntityAccess() {
+		return pCubeTypeEntity;
+	}
+	
+	public ParserRule getCubeTypeEntityRule() {
+		return getCubeTypeEntityAccess().getRule();
+	}
+
+	//CubeDimensionEntity:
+	//	{CubeDimensionEntity} entityRef=CubeEntity "{" hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
+	public CubeDimensionEntityElements getCubeDimensionEntityAccess() {
+		return pCubeDimensionEntity;
+	}
+	
+	public ParserRule getCubeDimensionEntityRule() {
+		return getCubeDimensionEntityAccess().getRule();
+	}
+
+	//CubeDimensionEntityEntity:
+	//	{CubeDimensionEntityEntity} entityRef=CubeEntity "{" "over" overValue=[entity::LEntityFeature|LFQN] ";"
+	//	hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
+	public CubeDimensionEntityEntityElements getCubeDimensionEntityEntityAccess() {
+		return pCubeDimensionEntityEntity;
+	}
+	
+	public ParserRule getCubeDimensionEntityEntityRule() {
+		return getCubeDimensionEntityEntityAccess().getRule();
+	}
+
+	//CubeLevel:
+	//	"level" name=TRANSLATABLEID "column=" levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?="uniqueMembers"?
+	//	(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)? (";" | "{" properties+=CubeLevelProp* "}");
+	public CubeLevelElements getCubeLevelAccess() {
+		return pCubeLevel;
+	}
+	
+	public ParserRule getCubeLevelRule() {
+		return getCubeLevelAccess().getRule();
+	}
+
+	//CubeLevelProp:
+	//	"property" name=TRANSLATABLEID "column=" levelPropColValue=[entity::LEntityFeature|LFQN] (type?="type="
+	//	typeValue=CubeLevelPropType)? ";";
+	public CubeLevelPropElements getCubeLevelPropAccess() {
+		return pCubeLevelProp;
+	}
+	
+	public ParserRule getCubeLevelPropRule() {
+		return getCubeLevelPropAccess().getRule();
+	}
+
+	//CubeMeasure:
+	//	"measure" name=TRANSLATABLEID aggregator=CubeAggregatorEnum "column=" measureCol=[entity::LEntityFeature|LFQN]
+	//	notVisible?="notVisible"? ";";
+	public CubeMeasureElements getCubeMeasureAccess() {
+		return pCubeMeasure;
+	}
+	
+	public ParserRule getCubeMeasureRule() {
+		return getCubeMeasureAccess().getRule();
+	}
+
+	//enum CubeAggregatorEnum:
+	//	SUM="sum" | COUNT="count" | MIN="min" | MAX="max" | AVG="avg" | DSC="distinct-count";
+	public CubeAggregatorEnumElements getCubeAggregatorEnumAccess() {
+		return unknownRuleCubeAggregatorEnum;
+	}
+	
+	public EnumRule getCubeAggregatorEnumRule() {
+		return getCubeAggregatorEnumAccess().getRule();
+	}
+
+	//enum CubeLevelPropType:
+	//	STRING="String" | NUMERIC="Numeric" | INTEGER="Integer" | BOOLEAN="Boolean" | DATE="Date" | TIME="Time" |
+	//	TIMESTAMP="Timestamp";
+	public CubeLevelPropTypeElements getCubeLevelPropTypeAccess() {
+		return unknownRuleCubeLevelPropType;
+	}
+	
+	public EnumRule getCubeLevelPropTypeRule() {
+		return getCubeLevelPropTypeAccess().getRule();
+	}
+
+	//enum CubeLevelLevelType:
+	//	MDLEVEL_TYPE_TIME="Time" | MDLEVEL_TYPE_TIME_YEARS="TimeYears" | MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears" |
+	//	MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters" | MDLEVEL_TYPE_TIME_MONTHS="TimeMonths" |
+	//	MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks" | MDLEVEL_TYPE_TIME_DAYS="TimeDays" | MDLEVEL_TYPE_TIME_HOURS="TimeHours" |
+	//	MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes" | MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds";
+	public CubeLevelLevelTypeElements getCubeLevelLevelTypeAccess() {
+		return unknownRuleCubeLevelLevelType;
+	}
+	
+	public EnumRule getCubeLevelLevelTypeRule() {
+		return getCubeLevelLevelTypeAccess().getRule();
+	}
+
+	//Import returns LImport:
+	//	"import" importedNamespace=CubeQualifiedNameWithWildCard ";";
+	public ImportElements getImportAccess() {
+		return pImport;
+	}
+	
+	public ParserRule getImportRule() {
+		return getImportAccess().getRule();
+	}
+
+	//CubeQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public CubeQualifiedNameWithWildCardElements getCubeQualifiedNameWithWildCardAccess() {
+		return pCubeQualifiedNameWithWildCard;
+	}
+	
+	public ParserRule getCubeQualifiedNameWithWildCardRule() {
+		return getCubeQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public QualifiedNameElements getQualifiedNameAccess() {
+		return pQualifiedName;
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+
+	//ValidID:
+	//	ID;
+	public ValidIDElements getValidIDAccess() {
+		return pValidID;
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+
+	//LFQN:
+	//	ID ("." ID)*;
+	public LFQNElements getLFQNAccess() {
+		return pLFQN;
+	}
+	
+	public ParserRule getLFQNRule() {
+		return getLFQNAccess().getRule();
+	}
+
+	//TRANSLATABLEID:
+	//	ID;
+	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
+		return pTRANSLATABLEID;
+	}
+	
+	public ParserRule getTRANSLATABLEIDRule() {
+		return getTRANSLATABLEIDAccess().getRule();
+	}
+
+	//TRANSLATABLESTRING:
+	//	STRING;
+	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
+		return pTRANSLATABLESTRING;
+	}
+	
+	public ParserRule getTRANSLATABLESTRINGRule() {
+		return getTRANSLATABLESTRINGAccess().getRule();
+	}
+
+	//XAnnotation:
+	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
+	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
+	//	value=XAnnotationElementValueOrCommaList)? ")")?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationAccess();
+	}
+	
+	public ParserRule getXAnnotationRule() {
+		return getXAnnotationAccess().getRule();
+	}
+
+	//XAnnotationElementValuePair:
+	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationElementValuePairAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValuePairRule() {
+		return getXAnnotationElementValuePairAccess().getRule();
+	}
+
+	//XAnnotationElementValueOrCommaList returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
+	//	XAnnotationOrExpression ({xbase::XListLiteral.elements+=current} ("," elements+=XAnnotationOrExpression)+)?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueOrCommaListElements getXAnnotationElementValueOrCommaListAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationElementValueOrCommaListAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueOrCommaListRule() {
+		return getXAnnotationElementValueOrCommaListAccess().getRule();
+	}
+
+	//XAnnotationElementValue returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
+	//	XAnnotationOrExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationElementValueAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueRule() {
+		return getXAnnotationElementValueAccess().getRule();
+	}
+
+	//XAnnotationOrExpression returns xbase::XExpression:
+	//	XAnnotation | XExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
+		return gaXbaseWithAnnotations.getXAnnotationOrExpressionAccess();
+	}
+	
+	public ParserRule getXAnnotationOrExpressionRule() {
+		return getXAnnotationOrExpressionAccess().getRule();
+	}
+
+	//XExpression:
+	//	XAssignment;
+	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
+		return gaXbaseWithAnnotations.getXExpressionAccess();
+	}
+	
+	public ParserRule getXExpressionRule() {
+		return getXExpressionAccess().getRule();
+	}
+
+	//XAssignment returns XExpression:
+	//	{XAssignment} feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign value=XAssignment | XOrExpression
+	//	(=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMultiAssign])
+	//	rightOperand=XAssignment)?;
+	public XbaseGrammarAccess.XAssignmentElements getXAssignmentAccess() {
+		return gaXbaseWithAnnotations.getXAssignmentAccess();
+	}
+	
+	public ParserRule getXAssignmentRule() {
+		return getXAssignmentAccess().getRule();
+	}
+
+	//OpSingleAssign:
+	//	"=";
+	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
+		return gaXbaseWithAnnotations.getOpSingleAssignAccess();
+	}
+	
+	public ParserRule getOpSingleAssignRule() {
+		return getOpSingleAssignAccess().getRule();
+	}
+
+	//OpMultiAssign:
+	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
+		return gaXbaseWithAnnotations.getOpMultiAssignAccess();
+	}
+	
+	public ParserRule getOpMultiAssignRule() {
+		return getOpMultiAssignAccess().getRule();
+	}
+
+	//XOrExpression returns XExpression:
+	//	XAndExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOr])
+	//	rightOperand=XAndExpression)*;
+	public XbaseGrammarAccess.XOrExpressionElements getXOrExpressionAccess() {
+		return gaXbaseWithAnnotations.getXOrExpressionAccess();
+	}
+	
+	public ParserRule getXOrExpressionRule() {
+		return getXOrExpressionAccess().getRule();
+	}
+
+	//OpOr:
+	//	"||";
+	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
+		return gaXbaseWithAnnotations.getOpOrAccess();
+	}
+	
+	public ParserRule getOpOrRule() {
+		return getOpOrAccess().getRule();
+	}
+
+	//XAndExpression returns XExpression:
+	//	XEqualityExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAnd])
+	//	rightOperand=XEqualityExpression)*;
+	public XbaseGrammarAccess.XAndExpressionElements getXAndExpressionAccess() {
+		return gaXbaseWithAnnotations.getXAndExpressionAccess();
+	}
+	
+	public ParserRule getXAndExpressionRule() {
+		return getXAndExpressionAccess().getRule();
+	}
+
+	//OpAnd:
+	//	"&&";
+	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
+		return gaXbaseWithAnnotations.getOpAndAccess();
+	}
+	
+	public ParserRule getOpAndRule() {
+		return getOpAndAccess().getRule();
+	}
+
+	//XEqualityExpression returns XExpression:
+	//	XRelationalExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpEquality])
+	//	rightOperand=XRelationalExpression)*;
+	public XbaseGrammarAccess.XEqualityExpressionElements getXEqualityExpressionAccess() {
+		return gaXbaseWithAnnotations.getXEqualityExpressionAccess();
+	}
+	
+	public ParserRule getXEqualityExpressionRule() {
+		return getXEqualityExpressionAccess().getRule();
+	}
+
+	//OpEquality:
+	//	"==" | "!=" | "===" | "!==";
+	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
+		return gaXbaseWithAnnotations.getOpEqualityAccess();
+	}
+	
+	public ParserRule getOpEqualityRule() {
+		return getOpEqualityAccess().getRule();
+	}
+
+	//XRelationalExpression returns XExpression:
+	//	XOtherOperatorExpression (=> ({XInstanceOfExpression.expression=current} "instanceof") type=JvmTypeReference | =>
+	//	({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpCompare])
+	//	rightOperand=XOtherOperatorExpression)*;
+	public XbaseGrammarAccess.XRelationalExpressionElements getXRelationalExpressionAccess() {
+		return gaXbaseWithAnnotations.getXRelationalExpressionAccess();
+	}
+	
+	public ParserRule getXRelationalExpressionRule() {
+		return getXRelationalExpressionAccess().getRule();
+	}
+
+	//OpCompare:
+	//	">=" | "<" "=" | ">" | "<";
+	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
+		return gaXbaseWithAnnotations.getOpCompareAccess();
+	}
+	
+	public ParserRule getOpCompareRule() {
+		return getOpCompareAccess().getRule();
+	}
+
+	//XOtherOperatorExpression returns XExpression:
+	//	XAdditiveExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpOther])
+	//	rightOperand=XAdditiveExpression)*;
+	public XbaseGrammarAccess.XOtherOperatorExpressionElements getXOtherOperatorExpressionAccess() {
+		return gaXbaseWithAnnotations.getXOtherOperatorExpressionAccess();
+	}
+	
+	public ParserRule getXOtherOperatorExpressionRule() {
+		return getXOtherOperatorExpressionAccess().getRule();
+	}
+
+	//OpOther:
+	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
+		return gaXbaseWithAnnotations.getOpOtherAccess();
+	}
+	
+	public ParserRule getOpOtherRule() {
+		return getOpOtherAccess().getRule();
+	}
+
+	//XAdditiveExpression returns XExpression:
+	//	XMultiplicativeExpression (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpAdd])
+	//	rightOperand=XMultiplicativeExpression)*;
+	public XbaseGrammarAccess.XAdditiveExpressionElements getXAdditiveExpressionAccess() {
+		return gaXbaseWithAnnotations.getXAdditiveExpressionAccess();
+	}
+	
+	public ParserRule getXAdditiveExpressionRule() {
+		return getXAdditiveExpressionAccess().getRule();
+	}
+
+	//OpAdd:
+	//	"+" | "-";
+	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
+		return gaXbaseWithAnnotations.getOpAddAccess();
+	}
+	
+	public ParserRule getOpAddRule() {
+		return getOpAddAccess().getRule();
+	}
+
+	//XMultiplicativeExpression returns XExpression:
+	//	XUnaryOperation (=> ({XBinaryOperation.leftOperand=current} feature=[types::JvmIdentifiableElement|OpMulti])
+	//	rightOperand=XUnaryOperation)*;
+	public XbaseGrammarAccess.XMultiplicativeExpressionElements getXMultiplicativeExpressionAccess() {
+		return gaXbaseWithAnnotations.getXMultiplicativeExpressionAccess();
+	}
+	
+	public ParserRule getXMultiplicativeExpressionRule() {
+		return getXMultiplicativeExpressionAccess().getRule();
+	}
+
+	//OpMulti:
+	//	"*" | "**" | "/" | "%";
+	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
+		return gaXbaseWithAnnotations.getOpMultiAccess();
+	}
+	
+	public ParserRule getOpMultiRule() {
+		return getOpMultiAccess().getRule();
+	}
+
+	//XUnaryOperation returns XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
+		return gaXbaseWithAnnotations.getXUnaryOperationAccess();
+	}
+	
+	public ParserRule getXUnaryOperationRule() {
+		return getXUnaryOperationAccess().getRule();
+	}
+
+	//OpUnary:
+	//	"!" | "-" | "+";
+	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
+		return gaXbaseWithAnnotations.getOpUnaryAccess();
+	}
+	
+	public ParserRule getOpUnaryRule() {
+		return getOpUnaryAccess().getRule();
+	}
+
+	//XCastedExpression returns XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
+		return gaXbaseWithAnnotations.getXCastedExpressionAccess();
+	}
+	
+	public ParserRule getXCastedExpressionRule() {
+		return getXCastedExpressionAccess().getRule();
+	}
+
+	//XPostfixOperation returns XExpression:
+	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
+	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
+		return gaXbaseWithAnnotations.getXPostfixOperationAccess();
+	}
+	
+	public ParserRule getXPostfixOperationRule() {
+		return getXPostfixOperationAccess().getRule();
+	}
+
+	//OpPostfix:
+	//	"++" | "--";
+	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
+		return gaXbaseWithAnnotations.getOpPostfixAccess();
+	}
+	
+	public ParserRule getOpPostfixRule() {
+		return getOpPostfixAccess().getRule();
+	}
+
+	//XMemberFeatureCall returns XExpression:
+	//	XPrimaryExpression (=> ({XAssignment.assignable=current} ("." | explicitStatic?="::")
+	//	feature=[types::JvmIdentifiableElement|FeatureCallID] OpSingleAssign) value=XAssignment | =>
+	//	({XMemberFeatureCall.memberCallTarget=current} ("." | nullSafe?="?." | explicitStatic?="::")) ("<"
+	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (memberCallArguments+=XShortClosure |
+	//	memberCallArguments+=XExpression ("," memberCallArguments+=XExpression)*)? ")")? memberCallArguments+=XClosure?)*;
+	public XbaseGrammarAccess.XMemberFeatureCallElements getXMemberFeatureCallAccess() {
+		return gaXbaseWithAnnotations.getXMemberFeatureCallAccess();
+	}
+	
+	public ParserRule getXMemberFeatureCallRule() {
+		return getXMemberFeatureCallAccess().getRule();
+	}
+
+	//XPrimaryExpression returns XExpression:
+	//	XConstructorCall | XBlockExpression | XSwitchExpression | XSynchronizedExpression | XFeatureCall | XLiteral |
+	//	XIfExpression | XForLoopExpression | XBasicForLoopExpression | XWhileExpression | XDoWhileExpression |
+	//	XThrowExpression | XReturnExpression | XTryCatchFinallyExpression | XParenthesizedExpression;
+	public XbaseGrammarAccess.XPrimaryExpressionElements getXPrimaryExpressionAccess() {
+		return gaXbaseWithAnnotations.getXPrimaryExpressionAccess();
+	}
+	
+	public ParserRule getXPrimaryExpressionRule() {
+		return getXPrimaryExpressionAccess().getRule();
+	}
+
+	//XLiteral returns XExpression:
+	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
+	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
+		return gaXbaseWithAnnotations.getXLiteralAccess();
+	}
+	
+	public ParserRule getXLiteralRule() {
+		return getXLiteralAccess().getRule();
+	}
+
+	//XCollectionLiteral:
+	//	XSetLiteral | XListLiteral;
+	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
+		return gaXbaseWithAnnotations.getXCollectionLiteralAccess();
+	}
+	
+	public ParserRule getXCollectionLiteralRule() {
+		return getXCollectionLiteralAccess().getRule();
+	}
+
+	//XSetLiteral:
+	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
+		return gaXbaseWithAnnotations.getXSetLiteralAccess();
+	}
+	
+	public ParserRule getXSetLiteralRule() {
+		return getXSetLiteralAccess().getRule();
+	}
+
+	//XListLiteral:
+	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
+		return gaXbaseWithAnnotations.getXListLiteralAccess();
+	}
+	
+	public ParserRule getXListLiteralRule() {
+		return getXListLiteralAccess().getRule();
+	}
+
+	//XClosure returns XExpression:
+	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
+	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
+		return gaXbaseWithAnnotations.getXClosureAccess();
+	}
+	
+	public ParserRule getXClosureRule() {
+		return getXClosureAccess().getRule();
+	}
+
+	//XExpressionInClosure returns XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
+		return gaXbaseWithAnnotations.getXExpressionInClosureAccess();
+	}
+	
+	public ParserRule getXExpressionInClosureRule() {
+		return getXExpressionInClosureAccess().getRule();
+	}
+
+	//XShortClosure returns XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?="|") expression=XExpression;
+	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
+		return gaXbaseWithAnnotations.getXShortClosureAccess();
+	}
+	
+	public ParserRule getXShortClosureRule() {
+		return getXShortClosureAccess().getRule();
+	}
+
+	//XParenthesizedExpression returns XExpression:
+	//	"(" XExpression ")";
+	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
+		return gaXbaseWithAnnotations.getXParenthesizedExpressionAccess();
+	}
+	
+	public ParserRule getXParenthesizedExpressionRule() {
+		return getXParenthesizedExpressionAccess().getRule();
+	}
+
+	//XIfExpression returns XExpression:
+	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
+		return gaXbaseWithAnnotations.getXIfExpressionAccess();
+	}
+	
+	public ParserRule getXIfExpressionRule() {
+		return getXIfExpressionAccess().getRule();
+	}
+
+	//XSwitchExpression returns XExpression:
+	//	{XSwitchExpression} "switch" (=> ("(" declaredParam=JvmFormalParameter ":") switch=XExpression ")" | =>
+	//	(declaredParam=JvmFormalParameter ":")? switch=XExpression) "{" cases+=XCasePart* ("default" ":" default=XExpression)?
+	//	"}";
+	public XbaseGrammarAccess.XSwitchExpressionElements getXSwitchExpressionAccess() {
+		return gaXbaseWithAnnotations.getXSwitchExpressionAccess();
+	}
+	
+	public ParserRule getXSwitchExpressionRule() {
+		return getXSwitchExpressionAccess().getRule();
+	}
+
+	//XCasePart:
+	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
+		return gaXbaseWithAnnotations.getXCasePartAccess();
+	}
+	
+	public ParserRule getXCasePartRule() {
+		return getXCasePartAccess().getRule();
+	}
+
+	//XForLoopExpression returns XExpression:
+	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	//	eachExpression=XExpression;
+	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
+		return gaXbaseWithAnnotations.getXForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXForLoopExpressionRule() {
+		return getXForLoopExpressionAccess().getRule();
+	}
+
+	//XBasicForLoopExpression returns XExpression:
+	//	{XBasicForLoopExpression} "for" "(" (initExpressions+=XExpressionOrVarDeclaration (","
+	//	initExpressions+=XExpressionOrVarDeclaration)*)? ";" expression=XExpression? ";" (updateExpressions+=XExpression (","
+	//	updateExpressions+=XExpression)*)? ")" eachExpression=XExpression;
+	public XbaseGrammarAccess.XBasicForLoopExpressionElements getXBasicForLoopExpressionAccess() {
+		return gaXbaseWithAnnotations.getXBasicForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXBasicForLoopExpressionRule() {
+		return getXBasicForLoopExpressionAccess().getRule();
+	}
+
+	//XWhileExpression returns XExpression:
+	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
+		return gaXbaseWithAnnotations.getXWhileExpressionAccess();
+	}
+	
+	public ParserRule getXWhileExpressionRule() {
+		return getXWhileExpressionAccess().getRule();
+	}
+
+	//XDoWhileExpression returns XExpression:
+	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
+		return gaXbaseWithAnnotations.getXDoWhileExpressionAccess();
+	}
+	
+	public ParserRule getXDoWhileExpressionRule() {
+		return getXDoWhileExpressionAccess().getRule();
+	}
+
+	//XBlockExpression returns XExpression:
+	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
+		return gaXbaseWithAnnotations.getXBlockExpressionAccess();
+	}
+	
+	public ParserRule getXBlockExpressionRule() {
+		return getXBlockExpressionAccess().getRule();
+	}
+
+	//XExpressionOrVarDeclaration returns XExpression:
+	//	XVariableDeclaration | XExpression;
+	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
+		return gaXbaseWithAnnotations.getXExpressionOrVarDeclarationAccess();
+	}
+	
+	public ParserRule getXExpressionOrVarDeclarationRule() {
+		return getXExpressionOrVarDeclarationAccess().getRule();
+	}
+
+	//XVariableDeclaration returns XExpression:
+	//	{XVariableDeclaration} (writeable?="var" | "val") (=> (type=JvmTypeReference name=ValidID) | name=ValidID) ("="
+	//	right=XExpression)?;
+	public XbaseGrammarAccess.XVariableDeclarationElements getXVariableDeclarationAccess() {
+		return gaXbaseWithAnnotations.getXVariableDeclarationAccess();
+	}
+	
+	public ParserRule getXVariableDeclarationRule() {
+		return getXVariableDeclarationAccess().getRule();
+	}
+
+	//JvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference? name=ValidID;
+	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
+		return gaXbaseWithAnnotations.getJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getJvmFormalParameterRule() {
+		return getJvmFormalParameterAccess().getRule();
+	}
+
+	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference name=ValidID;
+	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
+		return gaXbaseWithAnnotations.getFullJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getFullJvmFormalParameterRule() {
+		return getFullJvmFormalParameterAccess().getRule();
+	}
+
+	//XFeatureCall returns XExpression:
+	//	{XFeatureCall} ("<" typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")?
+	//	feature=[types::JvmIdentifiableElement|IdOrSuper] (=> explicitOperationCall?="(" (featureCallArguments+=XShortClosure
+	//	| featureCallArguments+=XExpression ("," featureCallArguments+=XExpression)*)? ")")? featureCallArguments+=XClosure?;
+	public XbaseGrammarAccess.XFeatureCallElements getXFeatureCallAccess() {
+		return gaXbaseWithAnnotations.getXFeatureCallAccess();
+	}
+	
+	public ParserRule getXFeatureCallRule() {
+		return getXFeatureCallAccess().getRule();
+	}
+
+	//FeatureCallID:
+	//	ValidID | "extends" | "static" | "import" | "extension";
+	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
+		return gaXbaseWithAnnotations.getFeatureCallIDAccess();
+	}
+	
+	public ParserRule getFeatureCallIDRule() {
+		return getFeatureCallIDAccess().getRule();
+	}
+
+	//IdOrSuper:
+	//	FeatureCallID | "super";
+	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
+		return gaXbaseWithAnnotations.getIdOrSuperAccess();
+	}
+	
+	public ParserRule getIdOrSuperRule() {
+		return getIdOrSuperAccess().getRule();
+	}
+
+	//XConstructorCall returns XExpression:
+	//	{XConstructorCall} "new" constructor=[types::JvmConstructor|QualifiedName] ("<"
+	//	typeArguments+=JvmArgumentTypeReference ("," typeArguments+=JvmArgumentTypeReference)* ">")? (=>
+	//	explicitConstructorCall?="(" (arguments+=XShortClosure | arguments+=XExpression ("," arguments+=XExpression)*)? ")")?
+	//	arguments+=XClosure?;
+	public XbaseGrammarAccess.XConstructorCallElements getXConstructorCallAccess() {
+		return gaXbaseWithAnnotations.getXConstructorCallAccess();
+	}
+	
+	public ParserRule getXConstructorCallRule() {
+		return getXConstructorCallAccess().getRule();
+	}
+
+	//XBooleanLiteral returns XExpression:
+	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
+		return gaXbaseWithAnnotations.getXBooleanLiteralAccess();
+	}
+	
+	public ParserRule getXBooleanLiteralRule() {
+		return getXBooleanLiteralAccess().getRule();
+	}
+
+	//XNullLiteral returns XExpression:
+	//	{XNullLiteral} "null";
+	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
+		return gaXbaseWithAnnotations.getXNullLiteralAccess();
+	}
+	
+	public ParserRule getXNullLiteralRule() {
+		return getXNullLiteralAccess().getRule();
+	}
+
+	//XNumberLiteral returns XExpression:
+	//	{XNumberLiteral} value=Number;
+	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
+		return gaXbaseWithAnnotations.getXNumberLiteralAccess();
+	}
+	
+	public ParserRule getXNumberLiteralRule() {
+		return getXNumberLiteralAccess().getRule();
+	}
+
+	//XStringLiteral returns XExpression:
+	//	{XStringLiteral} value=STRING;
+	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
+		return gaXbaseWithAnnotations.getXStringLiteralAccess();
+	}
+	
+	public ParserRule getXStringLiteralRule() {
+		return getXStringLiteralAccess().getRule();
+	}
+
+	//XTypeLiteral returns XExpression:
+	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
+		return gaXbaseWithAnnotations.getXTypeLiteralAccess();
+	}
+	
+	public ParserRule getXTypeLiteralRule() {
+		return getXTypeLiteralAccess().getRule();
+	}
+
+	//XThrowExpression returns XExpression:
+	//	{XThrowExpression} "throw" expression=XExpression;
+	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
+		return gaXbaseWithAnnotations.getXThrowExpressionAccess();
+	}
+	
+	public ParserRule getXThrowExpressionRule() {
+		return getXThrowExpressionAccess().getRule();
+	}
+
+	//XReturnExpression returns XExpression:
+	//	{XReturnExpression} "return" -> expression=XExpression?;
+	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
+		return gaXbaseWithAnnotations.getXReturnExpressionAccess();
+	}
+	
+	public ParserRule getXReturnExpressionRule() {
+		return getXReturnExpressionAccess().getRule();
+	}
+
+	//XTryCatchFinallyExpression returns XExpression:
+	//	{XTryCatchFinallyExpression} "try" expression=XExpression (catchClauses+=XCatchClause+ ("finally"
+	//	finallyExpression=XExpression)? | "finally" finallyExpression=XExpression);
+	public XbaseGrammarAccess.XTryCatchFinallyExpressionElements getXTryCatchFinallyExpressionAccess() {
+		return gaXbaseWithAnnotations.getXTryCatchFinallyExpressionAccess();
+	}
+	
+	public ParserRule getXTryCatchFinallyExpressionRule() {
+		return getXTryCatchFinallyExpressionAccess().getRule();
+	}
+
+	//XSynchronizedExpression returns XExpression:
+	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
+		return gaXbaseWithAnnotations.getXSynchronizedExpressionAccess();
+	}
+	
+	public ParserRule getXSynchronizedExpressionRule() {
+		return getXSynchronizedExpressionAccess().getRule();
+	}
+
+	//XCatchClause:
+	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
+		return gaXbaseWithAnnotations.getXCatchClauseAccess();
+	}
+	
+	public ParserRule getXCatchClauseRule() {
+		return getXCatchClauseAccess().getRule();
+	}
+
+	//Number hidden():
+	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	public XbaseGrammarAccess.NumberElements getNumberAccess() {
+		return gaXbaseWithAnnotations.getNumberAccess();
+	}
+	
+	public ParserRule getNumberRule() {
+		return getNumberAccess().getRule();
+	}
+
+	/// **
+	// * Dummy rule, for "better" downwards compatibility, since GrammarAccess generates non-static inner classes, 
+	// * which makes downstream grammars break on classloading, when a rule is removed.
+	// * / StaticQualifier:
+	//	(ValidID "::")+;
+	public XbaseGrammarAccess.StaticQualifierElements getStaticQualifierAccess() {
+		return gaXbaseWithAnnotations.getStaticQualifierAccess();
+	}
+	
+	public ParserRule getStaticQualifierRule() {
+		return getStaticQualifierAccess().getRule();
+	}
+
+	//terminal HEX:
+	//	("0x" | "0X") ("0".."9" | "a".."f" | "A".."F" | "_")+ ("#" (("b" | "B") ("i" | "I") | ("l" | "L")))?;
+	public TerminalRule getHEXRule() {
+		return gaXbaseWithAnnotations.getHEXRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	"0".."9" ("0".."9" | "_")*;
+	public TerminalRule getINTRule() {
+		return gaXbaseWithAnnotations.getINTRule();
+	} 
+
+	//terminal DECIMAL:
+	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	public TerminalRule getDECIMALRule() {
+		return gaXbaseWithAnnotations.getDECIMALRule();
+	} 
+
+	//JvmTypeReference:
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
+	//	XFunctionTypeRef;
+	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmTypeReferenceRule() {
+		return getJvmTypeReferenceAccess().getRule();
+	}
+
+	//ArrayBrackets:
+	//	"[" "]";
+	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
+		return gaXbaseWithAnnotations.getArrayBracketsAccess();
+	}
+	
+	public ParserRule getArrayBracketsRule() {
+		return getArrayBracketsAccess().getRule();
+	}
+
+	//XFunctionTypeRef:
+	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
+		return gaXbaseWithAnnotations.getXFunctionTypeRefAccess();
+	}
+	
+	public ParserRule getXFunctionTypeRefRule() {
+		return getXFunctionTypeRefAccess().getRule();
+	}
+
+	//JvmParameterizedTypeReference:
+	//	type=[JvmType|QualifiedName] ("<" arguments+=JvmArgumentTypeReference ("," arguments+=JvmArgumentTypeReference)* ">"
+	//	(=> ({JvmInnerTypeReference.outer=current} ".") type=[JvmType|ValidID] ("<" arguments+=JvmArgumentTypeReference (","
+	//	arguments+=JvmArgumentTypeReference)* ">")?)*)?;
+	public XtypeGrammarAccess.JvmParameterizedTypeReferenceElements getJvmParameterizedTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmParameterizedTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmParameterizedTypeReferenceRule() {
+		return getJvmParameterizedTypeReferenceAccess().getRule();
+	}
+
+	//JvmArgumentTypeReference returns JvmTypeReference:
+	//	JvmTypeReference | JvmWildcardTypeReference;
+	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmArgumentTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmArgumentTypeReferenceRule() {
+		return getJvmArgumentTypeReferenceAccess().getRule();
+	}
+
+	//JvmWildcardTypeReference:
+	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
+	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
+		return gaXbaseWithAnnotations.getJvmWildcardTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmWildcardTypeReferenceRule() {
+		return getJvmWildcardTypeReferenceAccess().getRule();
+	}
+
+	//JvmUpperBound:
+	//	"extends" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
+		return gaXbaseWithAnnotations.getJvmUpperBoundAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundRule() {
+		return getJvmUpperBoundAccess().getRule();
+	}
+
+	//JvmUpperBoundAnded returns JvmUpperBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
+		return gaXbaseWithAnnotations.getJvmUpperBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundAndedRule() {
+		return getJvmUpperBoundAndedAccess().getRule();
+	}
+
+	//JvmLowerBound:
+	//	"super" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
+		return gaXbaseWithAnnotations.getJvmLowerBoundAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundRule() {
+		return getJvmLowerBoundAccess().getRule();
+	}
+
+	//JvmLowerBoundAnded returns JvmLowerBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
+		return gaXbaseWithAnnotations.getJvmLowerBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundAndedRule() {
+		return getJvmLowerBoundAndedAccess().getRule();
+	}
+
+	//JvmTypeParameter:
+	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
+	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
+		return gaXbaseWithAnnotations.getJvmTypeParameterAccess();
+	}
+	
+	public ParserRule getJvmTypeParameterRule() {
+		return getJvmTypeParameterAccess().getRule();
+	}
+
+	//QualifiedNameWithWildcard:
+	//	QualifiedName "." "*";
+	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
+		return gaXbaseWithAnnotations.getQualifiedNameWithWildcardAccess();
+	}
+	
+	public ParserRule getQualifiedNameWithWildcardRule() {
+		return getQualifiedNameWithWildcardAccess().getRule();
+	}
+
+	//XImportSection:
+	//	importDeclarations+=XImportDeclaration+;
+	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
+		return gaXbaseWithAnnotations.getXImportSectionAccess();
+	}
+	
+	public ParserRule getXImportSectionRule() {
+		return getXImportSectionAccess().getRule();
+	}
+
+	//XImportDeclaration:
+	//	"import" (static?="static" extension?="extension"? importedType=[JvmDeclaredType|QualifiedNameInStaticImport]
+	//	(wildcard?="*" | memberName=ValidID) | importedType=[JvmDeclaredType|QualifiedName] |
+	//	importedNamespace=QualifiedNameWithWildcard) ";"?;
+	public XtypeGrammarAccess.XImportDeclarationElements getXImportDeclarationAccess() {
+		return gaXbaseWithAnnotations.getXImportDeclarationAccess();
+	}
+	
+	public ParserRule getXImportDeclarationRule() {
+		return getXImportDeclarationAccess().getRule();
+	}
+
+	//QualifiedNameInStaticImport:
+	//	(ValidID ".")+;
+	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
+		return gaXbaseWithAnnotations.getQualifiedNameInStaticImportAccess();
+	}
+	
+	public ParserRule getQualifiedNameInStaticImportRule() {
+		return getQualifiedNameInStaticImportAccess().getRule();
+	}
+
+	//terminal ID:
+	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaXbaseWithAnnotations.getIDRule();
+	} 
+
+	//terminal STRING:
+	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
+	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	public TerminalRule getSTRINGRule() {
+		return gaXbaseWithAnnotations.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaXbaseWithAnnotations.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaXbaseWithAnnotations.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaXbaseWithAnnotations.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaXbaseWithAnnotations.getANY_OTHERRule();
+	} 
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/validation/AbstractCubeDSLValidator.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/validation/AbstractCubeDSLValidator.java
new file mode 100644
index 0000000..36de8b8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/validation/AbstractCubeDSLValidator.java
@@ -0,0 +1,34 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+package org.eclipse.osbp.xtext.cubedsl.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractCubeDSLValidator extends org.eclipse.xtext.xbase.annotations.validation.XbaseWithAnnotationsValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>(super.getEPackages());
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/xtext/cubedsl/CubeDSL"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/dsl/common/types/v1"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/Xtext/Xbase/XAnnotations"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xbase"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes"));
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype"));
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/Activator.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/Activator.java
new file mode 100644
index 0000000..cf73321
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/Activator.java
@@ -0,0 +1,47 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.cubedsl;
+
+
+import org.eclipse.osbp.gitinfo.Loginfo;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		Loginfo li = new Loginfo();
+		li.print( Activator.class.getCanonicalName(), Activator.class.getClassLoader());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext
new file mode 100644
index 0000000..1b490d9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext
@@ -0,0 +1,92 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+grammar org.eclipse.osbp.xtext.cubedsl.CubeDSL with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+
+import "http://osbp.eclipse.org/xtext/cubedsl/CubeDSL"
+
+import "http://osbp.eclipse.org/dsl/common/types/v1"
+import "http://osbp.eclipse.org/dsl/entity/v1" as entity
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+
+CubeModel:
+	{CubeModel} pckg=CubePackage;
+
+CubePackage:
+	'package' name=QualifiedName ('{' (imports+=Import)* (dimensions+=CubeDimension)* (cubes+=CubeType)* '}')?;
+	
+CubeType:
+	'cube' name=ID (defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)? '{' cubeTypeEntity=CubeTypeEntity'}';
+
+CubeDimensionUsage:
+	'dimensionUsage' sourceValue=[CubeDimension] 'over' overValue=[entity::LEntityFeature|LFQN] ';';
+	
+CubeDimension:
+	'dimension' name=TRANSLATABLEID (typeTime?='typeTime')? '{' hierarchies+=CubeHierarchy* '}';
+
+CubeHierarchy:
+	{CubeHierarchy} 'hierarchy' (name=TRANSLATABLEID)? (hasAll?='hasAll')? (allMemberName?='allMemberName=' allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?='defaultMember=' defaultMemberValue=TRANSLATABLESTRING)?
+	'{' cubeDimEntity=CubeDimensionEntity '}';
+
+CubeEntity:
+	'entity' entityValue=[entity::LEntity|LFQN] (key?='key=' keyValue=[entity::LEntityFeature|LFQN])?;
+
+CubeTypeEntity:
+	 entityRef=CubeEntity '{' dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* '}';
+
+CubeDimensionEntity:
+	{CubeDimensionEntity} entityRef=CubeEntity '{' hierarchLevels+=CubeLevel* (dimEntity=CubeDimensionEntityEntity)? '}';
+	
+CubeDimensionEntityEntity:
+	{CubeDimensionEntityEntity} entityRef=CubeEntity '{' 'over' overValue=[entity::LEntityFeature|LFQN] ';' hierarchLevels+=CubeLevel* (dimEntity=CubeDimensionEntityEntity)? '}';
+	
+CubeLevel:
+	'level' name=TRANSLATABLEID  'column=' levelColValue=[entity::LEntityFeature|LFQN]  (uniqueMembers?='uniqueMembers')? (levelType?='levelType=' levelTypeValue=CubeLevelLevelType)? (';' | '{' properties+=CubeLevelProp* '}');
+	
+CubeLevelProp:
+	'property' name=TRANSLATABLEID  'column=' levelPropColValue=[entity::LEntityFeature|LFQN] (type?='type=' typeValue=CubeLevelPropType)? ';';
+	
+CubeMeasure:
+	'measure' name=TRANSLATABLEID aggregator=CubeAggregatorEnum 'column=' measureCol=[entity::LEntityFeature|LFQN] (notVisible?='notVisible')? ';';
+
+enum CubeAggregatorEnum:
+	 SUM='sum'| COUNT='count'| MIN='min'| MAX='max'| AVG='avg'| DSC='distinct-count';
+	 
+enum CubeLevelPropType:
+	STRING='String' | NUMERIC='Numeric' | INTEGER='Integer' | BOOLEAN='Boolean' | DATE='Date' | TIME='Time' | TIMESTAMP='Timestamp';
+
+enum CubeLevelLevelType:
+	MDLEVEL_TYPE_TIME='Time' | MDLEVEL_TYPE_TIME_YEARS='TimeYears' | MDLEVEL_TYPE_TIME_HALF_YEARS='TimeHalfYears' | MDLEVEL_TYPE_TIME_QUARTERS='TimeQuarters' | MDLEVEL_TYPE_TIME_MONTHS='TimeMonths' | MDLEVEL_TYPE_TIME_WEEKS='TimeWeeks' | 
+	MDLEVEL_TYPE_TIME_DAYS='TimeDays' | MDLEVEL_TYPE_TIME_HOURS='TimeHours' | MDLEVEL_TYPE_TIME_MINUTES='TimeMinutes' | MDLEVEL_TYPE_TIME_SECONDS='TimeSeconds';
+
+Import returns LImport:
+	'import' importedNamespace=CubeQualifiedNameWithWildCard ';';
+
+CubeQualifiedNameWithWildCard:
+	QualifiedName ('.' '*')?;
+		
+QualifiedName:
+  ValidID (=>'.' ValidID)*;
+  
+ValidID:
+	ID;
+	
+LFQN:
+	ID ('.' ID)*;
+	
+TRANSLATABLEID:
+	ID;
+	
+TRANSLATABLESTRING:
+	STRING;
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..8ce16dc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceRuntimeModule.java
@@ -0,0 +1,48 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderProvider;
+import org.eclipse.osbp.xtext.builder.types.loader.runtime.TypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.types.loader.runtime.TypeLoaderProvider;
+import org.eclipse.osbp.xtext.cubedsl.generator.ICubeRuntimeGenerator;
+
+@SuppressWarnings("restriction")
+public class CubeDSLBundleSpaceRuntimeModule extends CubeDSLRuntimeModule {
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+	public Class<? extends ITypeLoaderFactory> bindITypeLoaderFactory() {
+		return TypeLoaderFactory.class;
+	}
+
+	public Class<? extends ITypeLoaderProvider> ITypeLoaderProvider() {
+		return TypeLoaderProvider.class;
+	}
+
+	public Class<? extends ICubeRuntimeGenerator> bindICubeRuntimeGenerator() {
+		return ICubeRuntimeGenerator.NullImpl.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..cab992c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceStandaloneSetup.java
@@ -0,0 +1,54 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.hook.ExtensionsRuntimeModulesProvider;
+import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseBundleSpaceStandaloneSetup;
+import org.eclipse.xtext.util.Modules2;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+@SuppressWarnings("restriction")
+public class CubeDSLBundleSpaceStandaloneSetup extends CubeDSLStandaloneSetup {
+	public static void doSetup() {
+		new CubeDSLBundleSpaceStandaloneSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	@Override
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	@Override
+	public Injector createInjector() {
+		// try to get provided modules by extension
+		Module module = ExtensionsRuntimeModulesProvider.getInstance().get(
+				"org.eclipse.osbp.xtext.cubedsl.CubeDSL");
+		if (module != null) {
+			return Guice.createInjector(Modules2.mixin(
+					new CubeDSLBundleSpaceRuntimeModule(), module));
+		} else {
+			return Guice.createInjector(new CubeDSLBundleSpaceRuntimeModule());
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLRuntimeModule.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLRuntimeModule.java
new file mode 100644
index 0000000..f99cdcd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLRuntimeModule.java
@@ -0,0 +1,88 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import javax.inject.Singleton;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinker;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.LazyJvmTypeTransientValueService;
+import org.eclipse.osbp.xtext.cubedsl.jvmmodel.CubeModelGenerator;
+import org.eclipse.osbp.xtext.cubedsl.scoping.CubeDSLScopeProvider;
+import org.eclipse.osbp.xtext.cubedsl.valueconverter.CubeQualifiedNameProvider;
+import org.eclipse.osbp.xtext.cubedsl.valueconverter.CubeValueConverterService;
+import org.eclipse.osbp.xtext.i18n.DSLOutputConfigurationProvider;
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+
+import com.google.inject.Binder;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+@SuppressWarnings("restriction")
+public class CubeDSLRuntimeModule extends
+		org.eclipse.osbp.xtext.cubedsl.AbstractCubeDSLRuntimeModule {
+
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return CubeDSLScopeProvider.class;
+	}
+
+	/**
+	 * Only required, if fqn can not be created by appending the names of the
+	 * semantic elements up the hierarchy.
+	 */
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return CubeQualifiedNameProvider.class;
+	}
+
+	@Override
+	public Class<? extends IGenerator> bindIGenerator() {
+		return CubeModelGenerator.class;
+	}
+
+	@Override
+	public Class<? extends IValueConverterService> bindIValueConverterService() {
+		return CubeValueConverterService.class;
+	}
+
+	@Override
+	public void configure(Binder binder) {
+		super.configure(binder);
+		binder.bind(IOutputConfigurationProvider.class)
+				.to(DSLOutputConfigurationProvider.class).in(Singleton.class);
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return LazyJvmTypeLinker.class;
+	}
+
+	@Override
+	public void configureSerializerIScopeProvider(Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
+				.annotatedWith(
+						org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class)
+				.to(CubeDSLScopeProvider.class);
+	}
+
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
+		return LazyJvmTypeTransientValueService.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetup.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetup.java
new file mode 100644
index 0000000..67591ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetup.java
@@ -0,0 +1,24 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+/**
+ * Initialization support for running Xtext languages without equinox extension
+ * registry
+ */
+public class CubeDSLStandaloneSetup extends CubeDSLStandaloneSetupGenerated {
+
+	public static void doSetup() {
+		new CubeDSLStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/GenerateCubeDSL.mwe2 b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/GenerateCubeDSL.mwe2
new file mode 100644
index 0000000..3796581
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/GenerateCubeDSL.mwe2
@@ -0,0 +1,158 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+
+module org.eclipse.osbp.xtext.cubedsl.GenerateCubeDSL
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.* 
+import org.eclipse.osbp.dsl.mwe.*
+
+//var grammarURI = "classpath:/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext"
+
+var projectName = "org.eclipse.osbp.xtext.cubedsl"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext"
+var fileExtensions = "cube"
+var runtimeProject = "../${projectName}"
+var generateXtendStub = true
+var encoding = "UTF-8"
+
+Workflow {
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+	bean = MavenStandaloneSetup {
+		scanClassPath = true
+		platformUri = "${runtimeProject}/.."
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage"
+		
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerGenModelFile = "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.ecore"
+		registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/XAnnotations.ecore"
+	}
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}/src-gen"
+    	exclude = "README.txt"
+	}
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+    	exclude = "README.txt"
+	}
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.tests/src-gen"
+    	exclude = "README.txt"
+	}
+	component = Generator {
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		pathTestProject = "${runtimeProject}.tests"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		encoding = encoding
+		language = auto-inject {
+			uri = grammarURI 
+    
+    		// Java API to access grammar elements (required by several other fragments)
+    		fragment = grammarAccess.GrammarAccessFragment auto-inject {}
+    
+    		// generates Java API for the generated EPackages
+    		fragment = ecore.EMFGeneratorFragment auto-inject {}
+    
+    		// the old serialization component
+    		// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}    
+    
+    		// serializer 2.0
+    		fragment = serializer.SerializerFragment auto-inject {
+    			generateStub = false
+    		}
+    
+    		// a custom ResourceFactory for use with EMF
+    		fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
+    
+    		// The antlr parser generator fragment.
+    		fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
+    		//  options = {
+    		//      backtrack = true
+    		//  }
+    		}
+    
+    		// Xtend-based API for validation
+    		fragment = validation.ValidatorFragment auto-inject {
+    		//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+    		}
+    
+    		// old scoping and exporting API
+    		// fragment = scoping.ImportURIScopingFragment auto-inject {}
+    		// fragment = exporting.SimpleNamesFragment auto-inject {}
+    
+    		// scoping and exporting API
+    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
+    		fragment = exporting.QualifiedNamesFragment auto-inject {}
+    		fragment = builder.BuilderIntegrationFragment auto-inject {}
+    
+    		// generator API
+    		fragment = generator.GeneratorFragment auto-inject {}
+    
+    		// formatter API
+    		fragment = formatting.FormatterFragment auto-inject {}
+    
+    		// labeling API
+    		fragment = labeling.LabelProviderFragment auto-inject {}
+    
+    		// outline API
+    		fragment = outline.OutlineTreeProviderFragment auto-inject {}
+    		fragment = outline.QuickOutlineFragment auto-inject {}
+    
+    		// quickfix API
+    		fragment = quickfix.QuickfixProviderFragment auto-inject {}
+    
+    		// content assist API
+    		fragment = contentAssist.ContentAssistFragment auto-inject {}
+    
+    		// generates a more lightweight Antlr parser and lexer tailored for content assist
+    		fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {}
+    
+    		// generates junit test support classes into Generator#pathTestProject
+    		fragment = junit.Junit4Fragment auto-inject {}
+    
+    		// rename refactoring
+    		fragment = refactoring.RefactorElementNameFragment auto-inject {}
+    
+    		// provides the necessary bindings for java types integration
+    		fragment = types.TypesGeneratorFragment auto-inject {}
+    
+    		// generates the required bindings only if the grammar inherits from Xbase
+    		fragment = xbase.XbaseGeneratorFragment auto-inject {}
+    
+    		// provides a preference page for template proposals
+    		fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
+    
+    		// provides a compare view
+    		fragment = compare.CompareFragment auto-inject {}
+    		
+    		// parse grammar and generate i18n grammar
+            fragment = org.eclipse.osbp.xtext.basic.generator.BasicDslGrammarI18nGenerator auto-inject {}
+    	}
+    }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/XcoreResourceFactory.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/XcoreResourceFactory.java
new file mode 100644
index 0000000..7148a35
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/XcoreResourceFactory.java
@@ -0,0 +1,27 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xcore.resource.XcoreResource;
+
+public class XcoreResourceFactory implements Resource.Factory {
+	@Override
+	public Resource createResource(URI uri) {
+		XcoreResource resource = new XcoreResource();
+		resource.setURI(uri);
+		return resource;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.xtend
new file mode 100644
index 0000000..ac70c2a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.xtend
@@ -0,0 +1,76 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.formatting
+
+import com.google.inject.Inject
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
+import org.eclipse.xtext.formatting.impl.FormattingConfig
+import org.eclipse.osbp.utils.xtext.GenericFormatter
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess
+//import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess
+//import org.eclipse.xtext.ParserRule
+//import org.eclipse.xtext.GrammarUtil
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation.html#formatting
+ * on how and when to use it 
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+class CubeDSLFormatter extends AbstractDeclarativeFormatter {
+
+//	@Inject extension CubeDSLGrammarAccess
+	@Inject XtypeGrammarAccess grammarAccess
+
+	override protected void configureFormatting(FormattingConfig c) {
+		val genericFormatter = new GenericFormatter()
+
+//		val ga = grammar as CubeDSLGrammarAccess
+
+//		val ParserRule iRule = GrammarUtil.findRuleForName( grammar.grammar, "Import" ) as ParserRule
+//		c.setLinewrap(2).between( iRule, cubeTypeRule )
+//		c.setLinewrap(2).before( cubeTypeRule )
+
+//		c.setLinewrap(2).between( CubePackageRule, importRule )
+//		c.setLinewrap(2).before( ga.CubePackageAccess.packageKeyword_0 )
+//		c.setLinewrap(2).between( importRule, CubeTypeRule )
+//		c.setLinewrap(2).before( ga.CubeTypeAccess.cubeKeyword_0 )
+//		c.setLinewrap(2).before( CubeTypeAccess.cubeKeyword_0 )
+//		c.setLinewrap(2).around( importRule )			// each import statement!
+//		c.setLinewrap( 0, 1, 2 ).before( SL_COMMENTRule )
+//		c.setLinewrap( 0, 1, 1 ).after ( SL_COMMENTRule )
+//		c.setLinewrap().between( SL_COMMENTRule, CubeTypeRule )
+//		c.setLinewrap().between( SL_COMMENTRule, CubeEntityRule )
+//		c.setNoLinewrap().between( SL_COMMENTRule, SL_COMMENTRule )
+//		c.setNoLinewrap().after(SL_COMMENTRule)
+//		c.setLinewrap( 0, 1, 2 ).around( ML_COMMENTRule )
+//		c.setLinewrap( 0, 1, 2 ).before( ML_COMMENTRule )
+//		c.setLinewrap( 0, 1, 2 ).after ( ML_COMMENTRule )
+//		c.setLinewrap(1, 1, 1).around(SL_COMMENTRule)
+//		c.setLinewrap(1, 1, 1).around(ML_COMMENTRule)
+//		c.setLinewrap( 2 ).after( ga.importAccess.importedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0 )
+
+//		c.setNoLinewrap().before( cubePackageAccess.packageKeyword_0 )
+
+		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "CubeDimension", "Import" )
+		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "CubeType"     , "Import" )
+		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/generator/CubeRuntimeGeneratorProvider.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/generator/CubeRuntimeGeneratorProvider.java
new file mode 100644
index 0000000..b017f3c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/generator/CubeRuntimeGeneratorProvider.java
@@ -0,0 +1,58 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+ package org.eclipse.osbp.xtext.cubedsl.generator;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.xtext.resource.IResourceServiceProvider;
+
+/**
+ * Returns the active {@link ICubeRuntimeGenerator} or <code>null</code> if no
+ * generator was registered.
+ * <p>
+ * This class is a singleton, since IResourceServiceProvider.Registry.INSTANCE
+ * is also a singleton instance.
+ */
+//TODO goingEclipse
+public class CubeRuntimeGeneratorProvider {
+
+	private static final CubeRuntimeGeneratorProvider INSTANCE = new CubeRuntimeGeneratorProvider();
+
+	/**
+	 * This class is a singleton, since
+	 * IResourceServiceProvider.Registry.INSTANCE is also a singleton instance.
+	 * 
+	 * @return the instance
+	 */
+	public static CubeRuntimeGeneratorProvider getInstance() {
+		return INSTANCE;
+	}
+
+	private CubeRuntimeGeneratorProvider() {
+
+	}
+
+	/**
+	 * Returns the active {@link ICubeRuntimeGenerator} or <code>null</code> if
+	 * no generator was registered.
+	 * 
+	 * @return
+	 */
+	public ICubeRuntimeGenerator getGenerator() {
+		IResourceServiceProvider provider = IResourceServiceProvider.Registry.INSTANCE
+				.getResourceServiceProvider(URI
+						.createURI("tempAccess:/my.cube"));
+		return provider.get(ICubeRuntimeGenerator.class);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/generator/ICubeRuntimeGenerator.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/generator/ICubeRuntimeGenerator.java
new file mode 100644
index 0000000..ce97f53
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/generator/ICubeRuntimeGenerator.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.cubedsl.generator;
+
+import java.util.HashMap;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.xtext.cubedsl.CubeModel;
+
+/**
+ * Implementations need to generate valid text content based on the given
+ * Resource. Implementations do not handle any write to the filesystem.<br>
+ * Implementations of this interface are allowed to keep state, since a new
+ * generator by its provider each time. And it is also allowed to use
+ * Xtext-Injects.
+ */
+// TODO goingEclipse
+public interface ICubeRuntimeGenerator {
+
+	/**
+	 * Generates the cube xml content for the given resource. The model need to
+	 * be inside a {@link Resource}. Otherwise an exception is thrown.
+	 * 
+	 * @param input
+	 * @return
+	 */
+	public Result generate(CubeModel input);
+
+	@SuppressWarnings("serial")
+	public static class Result extends HashMap<String, Object> {
+		final String packageName;
+		final String xmlContent;
+		final URI uri;
+
+		public Result(URI uri, String packageName, String xmlContent) {
+			this.uri = uri;
+			this.packageName = packageName;
+			this.xmlContent = xmlContent;
+		}
+
+		/**
+		 * @return the packageName
+		 */
+		public String getPackageName() {
+			return packageName;
+		}
+
+		/**
+		 * @return the xmlContent
+		 */
+		public String getXmlContent() {
+			return xmlContent;
+		}
+
+		/**
+		 * @return the uri
+		 */
+		public URI getUri() {
+			return uri;
+		}
+
+	}
+
+	/**
+	 * A null implementation.
+	 */
+	public static class NullImpl implements ICubeRuntimeGenerator {
+		@Override
+		public Result generate(CubeModel input) {
+			return null;
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLGenerator.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLGenerator.xtend
new file mode 100644
index 0000000..d8d3c7a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLGenerator.xtend
@@ -0,0 +1,28 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.jvmmodel
+
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess
+
+class CubeModelGenerator extends I18NModelGenerator {
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+		super.doGenerate(input, fsa)
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.xtend
new file mode 100644
index 0000000..c1a2736
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.xtend
@@ -0,0 +1,33 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.jvmmodel
+
+import org.eclipse.osbp.xtext.cubedsl.CubePackage
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+
+/**
+ * <p>Infers a JVM model from the source model.</p> 
+ *
+ * <p>The JVM model should contain all elements that would appear in the Java code 
+ * which is generated from the source model. Other models link against the JVM model rather than the source model.</p>     
+ */
+class CubeDSLJvmModelInferrer extends AbstractModelInferrer {
+	def dispatch void infer(CubePackage pkg, IJvmDeclaredTypeAcceptor acceptor, boolean isPreIndexingPhase) {
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.xtend
new file mode 100644
index 0000000..60c7c6c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.xtend
@@ -0,0 +1,283 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.scoping
+
+import org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage
+import org.eclipse.osbp.xtext.cubedsl.CubeEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure
+import org.eclipse.osbp.xtext.cubedsl.CubePackage
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
+import java.util.ArrayList
+import java.util.Date
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.xtext.scoping.IScope
+import org.eclipse.xtext.scoping.Scopes
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation.html#scoping
+ * on how and when to use it 
+ *
+ */
+//class CubeDSLScopeProvider extends AbstractDeclarativeScopeProvider {
+class CubeDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider /*XbaseWithAnnotationsScopeProvider*/ {
+
+	@Override
+	override IScope getScope(EObject context, EReference reference) {
+		if (reference == CubeDSLPackage.Literals.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE) {
+			return getScope_CubeDimensionEntityEntityOverValue(context as CubeDimensionEntityEntity)
+		} else if (reference == CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE) {
+			return getScope_CubeDimensionUsage_OverValue(context as CubeDimensionUsage)
+		} else if (reference == CubeDSLPackage.Literals.CUBE_MEASURE__MEASURE_COL) {
+			return getScope_CubeMeasureCol(context as CubeMeasure)
+		} else if ((reference == CubeDSLPackage.Literals.CUBE_LEVEL__LEVEL_COL_VALUE)  ||
+					(reference == CubeDSLPackage.Literals.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE)
+		   			) {
+			return getScope_CubeEntityColRef(context as EObject)
+		} else if (reference == CubeDSLPackage.Literals.CUBE_ENTITY__KEY_VALUE) {
+			return getScope_CubeEntity_KeyValue(context as CubeEntity)
+		} else if (reference == CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE) {
+			return getScope_CubeDimensionUsage_SourceValue(context as CubeDimensionUsage)
+		} else {
+			return super.getScope(context, reference)
+		}
+
+	}
+	
+	def IScope getScope_CubeDimensionUsage_SourceValue(CubeDimensionUsage cubeDimUsage) {
+		var result = <EObject>newArrayList
+		var eObj = cubeDimUsage.eContainer
+		while (!(eObj instanceof CubePackage)) {
+			eObj = eObj.eContainer
+		}
+		var cubePackage = (eObj as CubePackage)
+		if (cubePackage != null) {
+			for (CubeDimension cubeDim : cubePackage.dimensions) {
+				if (cubeDim.name != null) {
+					result.add(cubeDim)
+				}
+			}
+		}
+		return Scopes.scopeFor(result)
+	}
+
+	def getScope_CubeDimensionUsage_OverValue(CubeDimensionUsage cubeDimUsage) {
+		var result = <EObject>newArrayList
+		var dimEntities = <String>newArrayList
+		var dimUsageSource = cubeDimUsage.getSourceValue
+		var LEntity cubeEnt = cubeDimUsage.getCubeEntity
+		if (dimUsageSource != null) {
+			for (CubeHierarchy cubeHierarchy : dimUsageSource.hierarchies){
+				dimEntities.add(cubeHierarchy.dimEntityName)
+			}
+			if (dimUsageSource.typeTime){
+				for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
+					if (entityAttr.date){
+						result.add(entityAttr)
+					}
+				} 
+			}
+		}
+		if (cubeEnt != null){
+			// If the cube entity is as the used entity for the dimension
+			// only its attributes are used as foreign key 
+			if (dimEntities.contains(cubeEnt.name)) {  
+				for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
+					result.add(entityAttr)
+				} 
+			} else {
+				for (LEntityReference entityRef : cubeEnt.allReferences) {
+					if (dimEntities.contains(entityRef.getTypeName)){
+						result.add(entityRef)
+					}
+				} 
+			}
+		}
+		return Scopes.scopeFor(result)
+	}
+	
+	def ArrayList<EObject> getRefResultList(LEntity cubeEnt, ArrayList<EObject> result){
+		for (LEntityReference entityRef : cubeEnt.allReferences) {
+			if (entityRef.name != null){
+				result.add(entityRef)
+			}
+		}
+		return result
+	}
+
+	def getCubeEntity(EObject childEObj){
+		var LEntity cubeEnt;
+		var eObj = childEObj.eContainer
+		while (!(eObj instanceof CubeTypeEntity)) {
+			if (eObj != null) {
+				eObj = eObj.eContainer
+			}
+		}
+		if (eObj != null) {
+			cubeEnt = (eObj as CubeTypeEntity).entityRef.entityValue
+		}
+		return cubeEnt
+	}
+	
+	def getScope_CubeMeasureCol(CubeMeasure cubeMeasure) {
+		var result = <EObject>newArrayList
+		var LEntity cubeEnt = cubeMeasure.getCubeEntity
+		if (cubeEnt != null){
+			// if measure uses count aggregator only numeric entity attributes are provided
+			if (cubeMeasure.aggregator != null && (cubeMeasure.aggregator.equals(CubeAggregatorEnum.COUNT) || cubeMeasure.aggregator.equals(CubeAggregatorEnum.DSC))){
+				result = cubeEnt.getRefResultList(result)
+			} else {
+				for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
+					if (entityAttr.type != null && (entityAttr.type instanceof LDataType) && (entityAttr.type as LDataType).asPrimitive && !("String".equals((entityAttr.type as LDataType).name))){
+						result.add(entityAttr)
+					}
+				}
+			}
+		}
+		return Scopes.scopeFor(result)
+	}
+	
+	def IScope getScope_CubeEntityColRef(EObject context) {
+		var result = <EObject>newArrayList
+		var eObj = context
+		while (!((eObj instanceof CubeDimensionEntity)||(eObj instanceof CubeDimensionEntityEntity)||(eObj instanceof CubeTypeEntity))) {
+			if (eObj != null) {
+				eObj = eObj.eContainer
+			}
+		}
+		if (eObj != null) {
+			var LEntity cubeEnt = null;
+			if (eObj instanceof CubeDimensionEntityEntity){
+				cubeEnt = (eObj as CubeDimensionEntityEntity).entityRef.entityValue
+			} else if (eObj instanceof CubeDimensionEntity){
+				cubeEnt = (eObj as CubeDimensionEntity).entityRef.entityValue
+			} else if (eObj instanceof CubeTypeEntity){
+				cubeEnt = (eObj as CubeTypeEntity).entityRef.entityValue
+			} 
+			result = cubeEnt.getAttrResultList(result)
+		}
+		return Scopes.scopeFor(result)
+	}
+	
+	def IScope getScope_CubeDimensionEntityEntityOverValue(CubeDimensionEntityEntity cubeDimEntityEntity) {
+		var result = <EObject>newArrayList
+		var eObj = cubeDimEntityEntity.eContainer
+		while (!(eObj instanceof CubeDimensionEntity)) {
+			if (eObj != null) {
+				eObj = eObj.eContainer
+			}
+		}
+		if (eObj != null) {
+			if (eObj instanceof CubeDimensionEntity){
+				result = cubeDimEntityEntity.getJoinableRefsResultList((eObj as CubeDimensionEntity), result)
+			} 
+		}
+		return Scopes.scopeFor(result)
+	}
+	
+	def IScope getScope_CubeEntity_KeyValue(CubeEntity entity) {
+		var result = <EObject>newArrayList
+		if (entity!=null){
+			result = entity.entityValue.getAttrResultList(result)
+		}
+		return Scopes.scopeFor(result)
+	}
+	
+	def getJoinableRefsResultList(CubeDimensionEntityEntity cubeDimEntityEntity, CubeDimensionEntity entity, ArrayList<EObject> result) {
+		if (entity != null && entity.entityRef != null && entity.entityRef.entityValue != null && entity.entityRef.entityValue.name != null) {
+			var LEntity cubeEnt = entity.entityRef.entityValue
+			for (LEntityReference lEntRef : cubeEnt.allReferences){
+				if (cubeDimEntityEntity.entityRef!=null && cubeDimEntityEntity.entityRef.entityValue !=null && cubeDimEntityEntity.entityRef.entityValue.name !=null && cubeDimEntityEntity.entityRef.entityValue.name.equals(lEntRef.type.name)){
+					result.add(lEntRef)
+				}
+			}
+		}
+		return result;
+	}
+
+	def getAttrResultList(LEntity cubeEnt, ArrayList<EObject> result) {
+		if (cubeEnt != null) {
+			for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
+				if (entityAttr.name != null) {
+					result.add(entityAttr)
+				}
+			}
+		}
+		return result;
+	}
+	
+		def getAllFeaturesResultList(LEntity cubeEnt, ArrayList<EObject> result) {
+			if (cubeEnt != null) {
+				for (LEntityFeature entityFeature : cubeEnt.allFeatures) {
+					if (entityFeature.name != null) {
+						result.add(entityFeature)
+					}
+				}
+			}
+			return result;
+		}
+		
+		def getDimEntityName(CubeHierarchy cubeHierarchy){
+			if (cubeHierarchy!=null && cubeHierarchy.cubeDimEntity!=null && cubeHierarchy.cubeDimEntity.entityRef!=null && cubeHierarchy.cubeDimEntity.entityRef.entityValue!=null){
+				return cubeHierarchy.cubeDimEntity.entityRef.entityValue.name
+			}
+		}
+		
+		def getTypeName(LEntityReference entityRef){
+			if (entityRef.type.name!=null && entityRef.type.name!=null){
+				return entityRef.type.name
+			}
+		}
+		
+		def isDate(LEntityAttribute entityAttr){
+			var dateTypes = <Class>newArrayList
+			dateTypes.add(typeof(Date))
+			dateTypes.add(typeof(java.sql.Date))
+			var isDateBoolean = (	(entityAttr.type instanceof LDataType) && 
+									((entityAttr.type as LDataType).date || 
+//								  	 (dateTypes.contains((entityAttr.type as LDataType).jvmTypeReference.type.simpleName))
+									 dateTypes.containsInstanceOf((entityAttr.type as LDataType))
+									)
+								)
+			return isDateBoolean
+		}
+	
+	def containsInstanceOf(ArrayList<Class> dateTypes, LDataType dataType) {
+		for (Class dateObj : dateTypes){
+			if (dateObj != null && dateObj.name.equals(dataType.jvmTypeReference.type.identifier)){
+				return true
+			}
+		}
+		return false;
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.xtend
new file mode 100644
index 0000000..d609e4e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.xtend
@@ -0,0 +1,99 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.xtext.cubedsl.validation
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
+import org.eclipse.emf.common.util.EList
+import org.eclipse.xtext.validation.Check
+import org.eclipse.osbp.xtext.cubedsl.CubePackage
+
+//import org.eclipse.xtext.validation.Check
+
+/**
+ * Custom validation rules. 
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+class CubeDSLValidator extends AbstractCubeDSLValidator {
+
+//  public static val INVALID_NAME = 'invalidName'
+//
+//	@Check
+//	def checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.name.charAt(0))) {
+//			warning('Name should start with a capital', 
+//					MyDslPackage.Literals.GREETING__NAME,
+//					INVALID_NAME)
+//		}
+//	}
+
+	@Check
+	def void checkHierarchyLevelAtNoJoin(CubeHierarchy hierarchy){
+		if (hierarchy.cubeDimEntity.dimEntity==null && hierarchy.cubeDimEntity.hierarchLevels.size == 0){
+			error("Level is required on a non-join hierarchy!", CubeDSLPackage.Literals.CUBE_HIERARCHY__CUBE_DIM_ENTITY)
+		}
+	}
+	
+	
+	@Check
+	def void checkTypeDimensionLevelType(CubeDimension cubeDimension){ 
+		var boolean existLevelType = existLevelType(cubeDimension)
+		if (existLevelType && !cubeDimension.typeTime){
+			error("Dimension attribute 'type=\"TypeDimension\" required for Level attribute 'levelType'!", CubeDSLPackage.Literals.CUBE_BASE__NAME);
+		}
+	}
+
+	def private boolean existLevelType(CubeDimension cubeDimension) {
+		for (CubeHierarchy hierarchy : cubeDimension.getHierarchies()) {
+			for (CubeLevel level : hierarchy.getCubeDimEntity().getHierarchLevels()) {
+				if (level.levelType){
+					return true
+				}
+			}
+		}
+		return false
+	}
+	
+	@Check
+	def void checkDuplicateDimensionNames(CubeDimension cubeDimension){ 
+		var eObj = cubeDimension.eContainer()
+		while (!(eObj instanceof CubePackage)) {
+			eObj = eObj.eContainer
+		}
+		if (eObj!=null){
+			var cubePackage = eObj as CubePackage;
+			if (findDuplicateDimensions(cubePackage.getDimensions(), cubeDimension.getName()) != null){
+				error("Duplicate dimensionname '".concat(cubeDimension.name).concat("'!"), CubeDSLPackage.Literals.CUBE_BASE__NAME)
+			}
+		}
+	}
+		
+	def private CubeDimension findDuplicateDimensions(
+			EList<CubeDimension> dims, String cubeDimensionName) {
+		var tempSet = <String>newHashSet()
+		for (CubeDimension dim : dims){
+		   if (!tempSet.add(dim.name) && (dim.name.equals(cubeDimensionName))){
+			   return dim
+		   }
+		}
+		return null
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeQualifiedNameProvider.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeQualifiedNameProvider.java
new file mode 100644
index 0000000..33b4d14
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeQualifiedNameProvider.java
@@ -0,0 +1,70 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl.valueconverter;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
+
+import com.google.inject.Inject;
+
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+
+@SuppressWarnings("restriction")
+public class CubeQualifiedNameProvider extends XbaseQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+
+		if (obj instanceof CubeDimension) {
+			CubeDimension dim = (CubeDimension) obj;
+			if (dim.getName() == null) {
+				return null;
+			}
+			return qualifiedNameConverter.toQualifiedName(dim.getName());
+		} else if (obj instanceof CubeHierarchy) {
+				CubeHierarchy hier = (CubeHierarchy) obj;
+				if (hier.getName() == null) {
+					CubeDimension dim = (CubeDimension)hier.eContainer();
+					if (dim.getName() == null) {
+						return null;
+					}
+					return qualifiedNameConverter.toQualifiedName(dim.getName());
+				}
+				return qualifiedNameConverter.toQualifiedName(hier.getName());
+		} else if (obj instanceof CubeMeasure) {
+			CubeMeasure meas = (CubeMeasure) obj;
+			if (meas.getName() == null) {
+				return null;
+			}
+			return qualifiedNameConverter.toQualifiedName(meas.getName());
+		} else if (obj instanceof CubeLevel) {
+			CubeLevel lev = (CubeLevel) obj;
+			if (lev.getName() == null) {
+				return null;
+			}
+			return qualifiedNameConverter.toQualifiedName(lev.getName());
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeValueConverterService.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeValueConverterService.java
new file mode 100644
index 0000000..d4c0f27
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeValueConverterService.java
@@ -0,0 +1,44 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the terms of the Eclipse Public License v1.0       
+ * which accompanies this distribution, and is available at                  
+ * http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ * Contributors:   
+ * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
+ */
+package org.eclipse.osbp.xtext.cubedsl.valueconverter;
+
+import org.eclipse.osbp.xtext.basic.valueconverter.TRANSLATABLESTRINGValueConverter;
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.conversion.ValueConverter;
+import org.eclipse.xtext.xbase.conversion.XbaseValueConverterService;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * Adds a value conversion for the QualifiedNameWithWildCard rule.
+ * 
+ * @author Jan Koehnlein
+ */
+@SuppressWarnings("restriction")
+@Singleton
+public class CubeValueConverterService extends XbaseValueConverterService {
+	@Inject
+	private TRANSLATABLESTRINGValueConverter converter;
+
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+
+	@ValueConverter(rule = "TRANSLATABLESTRING")
+	public IValueConverter<String> getTranslatableStringValueConverter() {
+		return converter;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.java
new file mode 100644
index 0000000..49ba0ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.java
@@ -0,0 +1,44 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.cubedsl.formatting;
+
+import com.google.inject.Inject;
+import org.eclipse.osbp.utils.xtext.GenericFormatter;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation.html#formatting
+ * on how and when to use it
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+@SuppressWarnings("all")
+public class CubeDSLFormatter extends AbstractDeclarativeFormatter {
+  @Inject
+  private XtypeGrammarAccess grammarAccess;
+  
+  protected void configureFormatting(final FormattingConfig c) {
+    final GenericFormatter genericFormatter = new GenericFormatter();
+    Grammar _grammar = this.grammar.getGrammar();
+    genericFormatter.formatFirstLevelBlocks(c, _grammar, "CubeDimension", "Import");
+    Grammar _grammar_1 = this.grammar.getGrammar();
+    genericFormatter.formatFirstLevelBlocks(c, _grammar_1, "CubeType", "Import");
+    genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.java
new file mode 100644
index 0000000..7c925c1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.java
@@ -0,0 +1,32 @@
+package org.eclipse.osbp.xtext.cubedsl.jvmmodel;
+
+import java.util.Arrays;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+
+/**
+ * <p>Infers a JVM model from the source model.</p>
+ * 
+ * <p>The JVM model should contain all elements that would appear in the Java code
+ * which is generated from the source model. Other models link against the JVM model rather than the source model.</p>
+ */
+@SuppressWarnings("all")
+public class CubeDSLJvmModelInferrer extends AbstractModelInferrer {
+  protected void _infer(final CubePackage pkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+  }
+  
+  public void infer(final EObject pkg, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
+    if (pkg instanceof CubePackage) {
+      _infer((CubePackage)pkg, acceptor, isPreIndexingPhase);
+      return;
+    } else if (pkg != null) {
+      _infer(pkg, acceptor, isPreIndexingPhase);
+      return;
+    } else {
+      throw new IllegalArgumentException("Unhandled parameter types: " +
+        Arrays.<Object>asList(pkg, acceptor, isPreIndexingPhase).toString());
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeModelGenerator.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeModelGenerator.java
new file mode 100644
index 0000000..74bfda7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeModelGenerator.java
@@ -0,0 +1,12 @@
+package org.eclipse.osbp.xtext.cubedsl.jvmmodel;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+
+@SuppressWarnings("all")
+public class CubeModelGenerator extends I18NModelGenerator {
+  public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
+    super.doGenerate(input, fsa);
+  }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.java
new file mode 100644
index 0000000..70f4a55
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.java
@@ -0,0 +1,536 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.cubedsl.scoping;
+
+import com.google.common.base.Objects;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage;
+import org.eclipse.osbp.xtext.cubedsl.CubeEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
+import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.Scopes;
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation.html#scoping
+ * on how and when to use it
+ */
+@SuppressWarnings("all")
+public class CubeDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+  @Override
+  public IScope getScope(final EObject context, final EReference reference) {
+    boolean _equals = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE);
+    if (_equals) {
+      return this.getScope_CubeDimensionEntityEntityOverValue(((CubeDimensionEntityEntity) context));
+    } else {
+      boolean _equals_1 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE);
+      if (_equals_1) {
+        return this.getScope_CubeDimensionUsage_OverValue(((CubeDimensionUsage) context));
+      } else {
+        boolean _equals_2 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_MEASURE__MEASURE_COL);
+        if (_equals_2) {
+          return this.getScope_CubeMeasureCol(((CubeMeasure) context));
+        } else {
+          boolean _or = false;
+          boolean _equals_3 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_LEVEL__LEVEL_COL_VALUE);
+          if (_equals_3) {
+            _or = true;
+          } else {
+            boolean _equals_4 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE);
+            _or = _equals_4;
+          }
+          if (_or) {
+            return this.getScope_CubeEntityColRef(((EObject) context));
+          } else {
+            boolean _equals_5 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_ENTITY__KEY_VALUE);
+            if (_equals_5) {
+              return this.getScope_CubeEntity_KeyValue(((CubeEntity) context));
+            } else {
+              boolean _equals_6 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE);
+              if (_equals_6) {
+                return this.getScope_CubeDimensionUsage_SourceValue(((CubeDimensionUsage) context));
+              } else {
+                return super.getScope(context, reference);
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  public IScope getScope_CubeDimensionUsage_SourceValue(final CubeDimensionUsage cubeDimUsage) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObj = cubeDimUsage.eContainer();
+    while ((!(eObj instanceof CubePackage))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    CubePackage cubePackage = ((CubePackage) eObj);
+    boolean _notEquals = (!Objects.equal(cubePackage, null));
+    if (_notEquals) {
+      EList<CubeDimension> _dimensions = cubePackage.getDimensions();
+      for (final CubeDimension cubeDim : _dimensions) {
+        String _name = cubeDim.getName();
+        boolean _notEquals_1 = (!Objects.equal(_name, null));
+        if (_notEquals_1) {
+          result.add(cubeDim);
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public IScope getScope_CubeDimensionUsage_OverValue(final CubeDimensionUsage cubeDimUsage) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    ArrayList<String> dimEntities = CollectionLiterals.<String>newArrayList();
+    CubeDimension dimUsageSource = cubeDimUsage.getSourceValue();
+    LEntity cubeEnt = this.getCubeEntity(cubeDimUsage);
+    boolean _notEquals = (!Objects.equal(dimUsageSource, null));
+    if (_notEquals) {
+      EList<CubeHierarchy> _hierarchies = dimUsageSource.getHierarchies();
+      for (final CubeHierarchy cubeHierarchy : _hierarchies) {
+        String _dimEntityName = this.getDimEntityName(cubeHierarchy);
+        dimEntities.add(_dimEntityName);
+      }
+      boolean _isTypeTime = dimUsageSource.isTypeTime();
+      if (_isTypeTime) {
+        List<LEntityAttribute> _allAttributes = cubeEnt.getAllAttributes();
+        for (final LEntityAttribute entityAttr : _allAttributes) {
+          boolean _isDate = this.isDate(entityAttr);
+          if (_isDate) {
+            result.add(entityAttr);
+          }
+        }
+      }
+    }
+    boolean _notEquals_1 = (!Objects.equal(cubeEnt, null));
+    if (_notEquals_1) {
+      String _name = cubeEnt.getName();
+      boolean _contains = dimEntities.contains(_name);
+      if (_contains) {
+        List<LEntityAttribute> _allAttributes_1 = cubeEnt.getAllAttributes();
+        for (final LEntityAttribute entityAttr_1 : _allAttributes_1) {
+          result.add(entityAttr_1);
+        }
+      } else {
+        List<LEntityReference> _allReferences = cubeEnt.getAllReferences();
+        for (final LEntityReference entityRef : _allReferences) {
+          String _typeName = this.getTypeName(entityRef);
+          boolean _contains_1 = dimEntities.contains(_typeName);
+          if (_contains_1) {
+            result.add(entityRef);
+          }
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public ArrayList<EObject> getRefResultList(final LEntity cubeEnt, final ArrayList<EObject> result) {
+    List<LEntityReference> _allReferences = cubeEnt.getAllReferences();
+    for (final LEntityReference entityRef : _allReferences) {
+      String _name = entityRef.getName();
+      boolean _notEquals = (!Objects.equal(_name, null));
+      if (_notEquals) {
+        result.add(entityRef);
+      }
+    }
+    return result;
+  }
+  
+  public LEntity getCubeEntity(final EObject childEObj) {
+    LEntity cubeEnt = null;
+    EObject eObj = childEObj.eContainer();
+    while ((!(eObj instanceof CubeTypeEntity))) {
+      boolean _notEquals = (!Objects.equal(eObj, null));
+      if (_notEquals) {
+        EObject _eContainer = eObj.eContainer();
+        eObj = _eContainer;
+      }
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      CubeEntity _entityRef = ((CubeTypeEntity) eObj).getEntityRef();
+      LEntity _entityValue = _entityRef.getEntityValue();
+      cubeEnt = _entityValue;
+    }
+    return cubeEnt;
+  }
+  
+  public IScope getScope_CubeMeasureCol(final CubeMeasure cubeMeasure) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    LEntity cubeEnt = this.getCubeEntity(cubeMeasure);
+    boolean _notEquals = (!Objects.equal(cubeEnt, null));
+    if (_notEquals) {
+      boolean _and = false;
+      CubeAggregatorEnum _aggregator = cubeMeasure.getAggregator();
+      boolean _notEquals_1 = (!Objects.equal(_aggregator, null));
+      if (!_notEquals_1) {
+        _and = false;
+      } else {
+        boolean _or = false;
+        CubeAggregatorEnum _aggregator_1 = cubeMeasure.getAggregator();
+        boolean _equals = _aggregator_1.equals(CubeAggregatorEnum.COUNT);
+        if (_equals) {
+          _or = true;
+        } else {
+          CubeAggregatorEnum _aggregator_2 = cubeMeasure.getAggregator();
+          boolean _equals_1 = _aggregator_2.equals(CubeAggregatorEnum.DSC);
+          _or = _equals_1;
+        }
+        _and = _or;
+      }
+      if (_and) {
+        ArrayList<EObject> _refResultList = this.getRefResultList(cubeEnt, result);
+        result = _refResultList;
+      } else {
+        List<LEntityAttribute> _allAttributes = cubeEnt.getAllAttributes();
+        for (final LEntityAttribute entityAttr : _allAttributes) {
+          boolean _and_1 = false;
+          boolean _and_2 = false;
+          boolean _and_3 = false;
+          LScalarType _type = entityAttr.getType();
+          boolean _notEquals_2 = (!Objects.equal(_type, null));
+          if (!_notEquals_2) {
+            _and_3 = false;
+          } else {
+            LScalarType _type_1 = entityAttr.getType();
+            _and_3 = (_type_1 instanceof LDataType);
+          }
+          if (!_and_3) {
+            _and_2 = false;
+          } else {
+            LScalarType _type_2 = entityAttr.getType();
+            boolean _isAsPrimitive = ((LDataType) _type_2).isAsPrimitive();
+            _and_2 = _isAsPrimitive;
+          }
+          if (!_and_2) {
+            _and_1 = false;
+          } else {
+            LScalarType _type_3 = entityAttr.getType();
+            String _name = ((LDataType) _type_3).getName();
+            boolean _equals_2 = "String".equals(_name);
+            boolean _not = (!_equals_2);
+            _and_1 = _not;
+          }
+          if (_and_1) {
+            result.add(entityAttr);
+          }
+        }
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public IScope getScope_CubeEntityColRef(final EObject context) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObj = context;
+    while ((!(((eObj instanceof CubeDimensionEntity) || (eObj instanceof CubeDimensionEntityEntity)) || (eObj instanceof CubeTypeEntity)))) {
+      boolean _notEquals = (!Objects.equal(eObj, null));
+      if (_notEquals) {
+        EObject _eContainer = eObj.eContainer();
+        eObj = _eContainer;
+      }
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      LEntity cubeEnt = null;
+      if ((eObj instanceof CubeDimensionEntityEntity)) {
+        CubeEntity _entityRef = ((CubeDimensionEntityEntity) eObj).getEntityRef();
+        LEntity _entityValue = _entityRef.getEntityValue();
+        cubeEnt = _entityValue;
+      } else {
+        if ((eObj instanceof CubeDimensionEntity)) {
+          CubeEntity _entityRef_1 = ((CubeDimensionEntity) eObj).getEntityRef();
+          LEntity _entityValue_1 = _entityRef_1.getEntityValue();
+          cubeEnt = _entityValue_1;
+        } else {
+          if ((eObj instanceof CubeTypeEntity)) {
+            CubeEntity _entityRef_2 = ((CubeTypeEntity) eObj).getEntityRef();
+            LEntity _entityValue_2 = _entityRef_2.getEntityValue();
+            cubeEnt = _entityValue_2;
+          }
+        }
+      }
+      ArrayList<EObject> _attrResultList = this.getAttrResultList(cubeEnt, result);
+      result = _attrResultList;
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public IScope getScope_CubeDimensionEntityEntityOverValue(final CubeDimensionEntityEntity cubeDimEntityEntity) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    EObject eObj = cubeDimEntityEntity.eContainer();
+    while ((!(eObj instanceof CubeDimensionEntity))) {
+      boolean _notEquals = (!Objects.equal(eObj, null));
+      if (_notEquals) {
+        EObject _eContainer = eObj.eContainer();
+        eObj = _eContainer;
+      }
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      if ((eObj instanceof CubeDimensionEntity)) {
+        ArrayList<EObject> _joinableRefsResultList = this.getJoinableRefsResultList(cubeDimEntityEntity, ((CubeDimensionEntity) eObj), result);
+        result = _joinableRefsResultList;
+      }
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public IScope getScope_CubeEntity_KeyValue(final CubeEntity entity) {
+    ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
+    boolean _notEquals = (!Objects.equal(entity, null));
+    if (_notEquals) {
+      LEntity _entityValue = entity.getEntityValue();
+      ArrayList<EObject> _attrResultList = this.getAttrResultList(_entityValue, result);
+      result = _attrResultList;
+    }
+    return Scopes.scopeFor(result);
+  }
+  
+  public ArrayList<EObject> getJoinableRefsResultList(final CubeDimensionEntityEntity cubeDimEntityEntity, final CubeDimensionEntity entity, final ArrayList<EObject> result) {
+    boolean _and = false;
+    boolean _and_1 = false;
+    boolean _and_2 = false;
+    boolean _notEquals = (!Objects.equal(entity, null));
+    if (!_notEquals) {
+      _and_2 = false;
+    } else {
+      CubeEntity _entityRef = entity.getEntityRef();
+      boolean _notEquals_1 = (!Objects.equal(_entityRef, null));
+      _and_2 = _notEquals_1;
+    }
+    if (!_and_2) {
+      _and_1 = false;
+    } else {
+      CubeEntity _entityRef_1 = entity.getEntityRef();
+      LEntity _entityValue = _entityRef_1.getEntityValue();
+      boolean _notEquals_2 = (!Objects.equal(_entityValue, null));
+      _and_1 = _notEquals_2;
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      CubeEntity _entityRef_2 = entity.getEntityRef();
+      LEntity _entityValue_1 = _entityRef_2.getEntityValue();
+      String _name = _entityValue_1.getName();
+      boolean _notEquals_3 = (!Objects.equal(_name, null));
+      _and = _notEquals_3;
+    }
+    if (_and) {
+      CubeEntity _entityRef_3 = entity.getEntityRef();
+      LEntity cubeEnt = _entityRef_3.getEntityValue();
+      List<LEntityReference> _allReferences = cubeEnt.getAllReferences();
+      for (final LEntityReference lEntRef : _allReferences) {
+        boolean _and_3 = false;
+        boolean _and_4 = false;
+        boolean _and_5 = false;
+        CubeEntity _entityRef_4 = cubeDimEntityEntity.getEntityRef();
+        boolean _notEquals_4 = (!Objects.equal(_entityRef_4, null));
+        if (!_notEquals_4) {
+          _and_5 = false;
+        } else {
+          CubeEntity _entityRef_5 = cubeDimEntityEntity.getEntityRef();
+          LEntity _entityValue_2 = _entityRef_5.getEntityValue();
+          boolean _notEquals_5 = (!Objects.equal(_entityValue_2, null));
+          _and_5 = _notEquals_5;
+        }
+        if (!_and_5) {
+          _and_4 = false;
+        } else {
+          CubeEntity _entityRef_6 = cubeDimEntityEntity.getEntityRef();
+          LEntity _entityValue_3 = _entityRef_6.getEntityValue();
+          String _name_1 = _entityValue_3.getName();
+          boolean _notEquals_6 = (!Objects.equal(_name_1, null));
+          _and_4 = _notEquals_6;
+        }
+        if (!_and_4) {
+          _and_3 = false;
+        } else {
+          CubeEntity _entityRef_7 = cubeDimEntityEntity.getEntityRef();
+          LEntity _entityValue_4 = _entityRef_7.getEntityValue();
+          String _name_2 = _entityValue_4.getName();
+          LEntity _type = lEntRef.getType();
+          String _name_3 = _type.getName();
+          boolean _equals = _name_2.equals(_name_3);
+          _and_3 = _equals;
+        }
+        if (_and_3) {
+          result.add(lEntRef);
+        }
+      }
+    }
+    return result;
+  }
+  
+  public ArrayList<EObject> getAttrResultList(final LEntity cubeEnt, final ArrayList<EObject> result) {
+    boolean _notEquals = (!Objects.equal(cubeEnt, null));
+    if (_notEquals) {
+      List<LEntityAttribute> _allAttributes = cubeEnt.getAllAttributes();
+      for (final LEntityAttribute entityAttr : _allAttributes) {
+        String _name = entityAttr.getName();
+        boolean _notEquals_1 = (!Objects.equal(_name, null));
+        if (_notEquals_1) {
+          result.add(entityAttr);
+        }
+      }
+    }
+    return result;
+  }
+  
+  public ArrayList<EObject> getAllFeaturesResultList(final LEntity cubeEnt, final ArrayList<EObject> result) {
+    boolean _notEquals = (!Objects.equal(cubeEnt, null));
+    if (_notEquals) {
+      List<LEntityFeature> _allFeatures = cubeEnt.getAllFeatures();
+      for (final LEntityFeature entityFeature : _allFeatures) {
+        String _name = entityFeature.getName();
+        boolean _notEquals_1 = (!Objects.equal(_name, null));
+        if (_notEquals_1) {
+          result.add(entityFeature);
+        }
+      }
+    }
+    return result;
+  }
+  
+  public String getDimEntityName(final CubeHierarchy cubeHierarchy) {
+    boolean _and = false;
+    boolean _and_1 = false;
+    boolean _and_2 = false;
+    boolean _notEquals = (!Objects.equal(cubeHierarchy, null));
+    if (!_notEquals) {
+      _and_2 = false;
+    } else {
+      CubeDimensionEntity _cubeDimEntity = cubeHierarchy.getCubeDimEntity();
+      boolean _notEquals_1 = (!Objects.equal(_cubeDimEntity, null));
+      _and_2 = _notEquals_1;
+    }
+    if (!_and_2) {
+      _and_1 = false;
+    } else {
+      CubeDimensionEntity _cubeDimEntity_1 = cubeHierarchy.getCubeDimEntity();
+      CubeEntity _entityRef = _cubeDimEntity_1.getEntityRef();
+      boolean _notEquals_2 = (!Objects.equal(_entityRef, null));
+      _and_1 = _notEquals_2;
+    }
+    if (!_and_1) {
+      _and = false;
+    } else {
+      CubeDimensionEntity _cubeDimEntity_2 = cubeHierarchy.getCubeDimEntity();
+      CubeEntity _entityRef_1 = _cubeDimEntity_2.getEntityRef();
+      LEntity _entityValue = _entityRef_1.getEntityValue();
+      boolean _notEquals_3 = (!Objects.equal(_entityValue, null));
+      _and = _notEquals_3;
+    }
+    if (_and) {
+      CubeDimensionEntity _cubeDimEntity_3 = cubeHierarchy.getCubeDimEntity();
+      CubeEntity _entityRef_2 = _cubeDimEntity_3.getEntityRef();
+      LEntity _entityValue_1 = _entityRef_2.getEntityValue();
+      return _entityValue_1.getName();
+    }
+    return null;
+  }
+  
+  public String getTypeName(final LEntityReference entityRef) {
+    boolean _and = false;
+    LEntity _type = entityRef.getType();
+    String _name = _type.getName();
+    boolean _notEquals = (!Objects.equal(_name, null));
+    if (!_notEquals) {
+      _and = false;
+    } else {
+      LEntity _type_1 = entityRef.getType();
+      String _name_1 = _type_1.getName();
+      boolean _notEquals_1 = (!Objects.equal(_name_1, null));
+      _and = _notEquals_1;
+    }
+    if (_and) {
+      LEntity _type_2 = entityRef.getType();
+      return _type_2.getName();
+    }
+    return null;
+  }
+  
+  public boolean isDate(final LEntityAttribute entityAttr) {
+    ArrayList<Class> dateTypes = CollectionLiterals.<Class>newArrayList();
+    dateTypes.add(Date.class);
+    dateTypes.add(java.sql.Date.class);
+    boolean _and = false;
+    LScalarType _type = entityAttr.getType();
+    if (!(_type instanceof LDataType)) {
+      _and = false;
+    } else {
+      boolean _or = false;
+      LScalarType _type_1 = entityAttr.getType();
+      boolean _isDate = ((LDataType) _type_1).isDate();
+      if (_isDate) {
+        _or = true;
+      } else {
+        LScalarType _type_2 = entityAttr.getType();
+        boolean _containsInstanceOf = this.containsInstanceOf(dateTypes, ((LDataType) _type_2));
+        _or = _containsInstanceOf;
+      }
+      _and = _or;
+    }
+    boolean isDateBoolean = _and;
+    return isDateBoolean;
+  }
+  
+  public boolean containsInstanceOf(final ArrayList<Class> dateTypes, final LDataType dataType) {
+    for (final Class dateObj : dateTypes) {
+      boolean _and = false;
+      boolean _notEquals = (!Objects.equal(dateObj, null));
+      if (!_notEquals) {
+        _and = false;
+      } else {
+        String _name = dateObj.getName();
+        JvmTypeReference _jvmTypeReference = dataType.getJvmTypeReference();
+        JvmType _type = _jvmTypeReference.getType();
+        String _identifier = _type.getIdentifier();
+        boolean _equals = _name.equals(_identifier);
+        _and = _equals;
+      }
+      if (_and) {
+        return true;
+      }
+    }
+    return false;
+  }
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.java
new file mode 100644
index 0000000..60aa295
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.java
@@ -0,0 +1,132 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.cubedsl.validation;
+
+import com.google.common.base.Objects;
+import java.util.HashSet;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity;
+import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
+import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
+import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+import org.eclipse.osbp.xtext.cubedsl.validation.AbstractCubeDSLValidator;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+@SuppressWarnings("all")
+public class CubeDSLValidator extends AbstractCubeDSLValidator {
+  @Check
+  public void checkHierarchyLevelAtNoJoin(final CubeHierarchy hierarchy) {
+    boolean _and = false;
+    CubeDimensionEntity _cubeDimEntity = hierarchy.getCubeDimEntity();
+    CubeDimensionEntityEntity _dimEntity = _cubeDimEntity.getDimEntity();
+    boolean _equals = Objects.equal(_dimEntity, null);
+    if (!_equals) {
+      _and = false;
+    } else {
+      CubeDimensionEntity _cubeDimEntity_1 = hierarchy.getCubeDimEntity();
+      EList<CubeLevel> _hierarchLevels = _cubeDimEntity_1.getHierarchLevels();
+      int _size = _hierarchLevels.size();
+      boolean _equals_1 = (_size == 0);
+      _and = _equals_1;
+    }
+    if (_and) {
+      this.error("Level is required on a non-join hierarchy!", CubeDSLPackage.Literals.CUBE_HIERARCHY__CUBE_DIM_ENTITY);
+    }
+  }
+  
+  @Check
+  public void checkTypeDimensionLevelType(final CubeDimension cubeDimension) {
+    boolean existLevelType = this.existLevelType(cubeDimension);
+    boolean _and = false;
+    if (!existLevelType) {
+      _and = false;
+    } else {
+      boolean _isTypeTime = cubeDimension.isTypeTime();
+      boolean _not = (!_isTypeTime);
+      _and = _not;
+    }
+    if (_and) {
+      this.error("Dimension attribute \'type=\"TypeDimension\" required for Level attribute \'levelType\'!", CubeDSLPackage.Literals.CUBE_BASE__NAME);
+    }
+  }
+  
+  private boolean existLevelType(final CubeDimension cubeDimension) {
+    EList<CubeHierarchy> _hierarchies = cubeDimension.getHierarchies();
+    for (final CubeHierarchy hierarchy : _hierarchies) {
+      CubeDimensionEntity _cubeDimEntity = hierarchy.getCubeDimEntity();
+      EList<CubeLevel> _hierarchLevels = _cubeDimEntity.getHierarchLevels();
+      for (final CubeLevel level : _hierarchLevels) {
+        boolean _isLevelType = level.isLevelType();
+        if (_isLevelType) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  @Check
+  public void checkDuplicateDimensionNames(final CubeDimension cubeDimension) {
+    EObject eObj = cubeDimension.eContainer();
+    while ((!(eObj instanceof CubePackage))) {
+      EObject _eContainer = eObj.eContainer();
+      eObj = _eContainer;
+    }
+    boolean _notEquals = (!Objects.equal(eObj, null));
+    if (_notEquals) {
+      CubePackage cubePackage = ((CubePackage) eObj);
+      EList<CubeDimension> _dimensions = cubePackage.getDimensions();
+      String _name = cubeDimension.getName();
+      CubeDimension _findDuplicateDimensions = this.findDuplicateDimensions(_dimensions, _name);
+      boolean _notEquals_1 = (!Objects.equal(_findDuplicateDimensions, null));
+      if (_notEquals_1) {
+        String _name_1 = cubeDimension.getName();
+        String _concat = "Duplicate dimensionname \'".concat(_name_1);
+        String _concat_1 = _concat.concat("\'!");
+        this.error(_concat_1, CubeDSLPackage.Literals.CUBE_BASE__NAME);
+      }
+    }
+  }
+  
+  private CubeDimension findDuplicateDimensions(final EList<CubeDimension> dims, final String cubeDimensionName) {
+    HashSet<String> tempSet = CollectionLiterals.<String>newHashSet();
+    for (final CubeDimension dim : dims) {
+      boolean _and = false;
+      String _name = dim.getName();
+      boolean _add = tempSet.add(_name);
+      boolean _not = (!_add);
+      if (!_not) {
+        _and = false;
+      } else {
+        String _name_1 = dim.getName();
+        boolean _equals = _name_1.equals(cubeDimensionName);
+        _and = _equals;
+      }
+      if (_and) {
+        return dim;
+      }
+    }
+    return null;
+  }
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e52d1fb
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Christophe Loetz  (Loetz GmbH&Co.KG) - Initial implementation API and implementation -->
+<!--#======================================================================= -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.eclipse.osbp.releng.maven</groupId>
+		<artifactId>org.eclipse.osbp.releng.maven.parent.tycho</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath/>
+	</parent>
+
+	<groupId>org.eclipse.osbp.xtext.cubedsl</groupId>
+	<artifactId>org.eclipse.osbp.xtext.cubedsl.aggregator</artifactId>
+	<version>0.9.0-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<url>${osbp.site.repository.url}</url>
+	<scm>
+		<url>${osbp.scm.url}</url>
+		<connection>${osbp.scm.connection}</connection>
+		<developerConnection>${osbp.scm.connection.dev}</developerConnection>
+		<tag>HEAD</tag>
+	</scm>
+	<distributionManagement>
+		<site>
+			<id>gh-pages</id>
+			<name>OSBP GitHub Pages</name>
+			<url>${distribution.site.url}</url>
+		</site>
+	</distributionManagement>
+
+	<properties>
+		<osbp.gitrepo.name>${project.groupId}</osbp.gitrepo.name>
+	</properties>
+
+	<modules>
+		<module>org.eclipse.osbp.xtext.cubedsl</module>
+		<module>org.eclipse.osbp.xtext.cubedsl.tests</module>
+		<module>org.eclipse.osbp.xtext.cubedsl.ui</module>
+		<module>org.eclipse.osbp.xtext.cubedsl.feature</module>
+	</modules>
+
+	<build>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-javadoc-plugin</artifactId>
+					<configuration>
+						<skip>true</skip>
+					</configuration>
+				</plugin>
+				<plugin>
+					<groupId>org.eclipse.tycho</groupId>
+					<artifactId>target-platform-configuration</artifactId>
+					<version>${tycho-version}</version>
+					<configuration>
+						<resolver>p2</resolver>
+						<pomDependencies>consider</pomDependencies>
+						<environments>
+							<environment>
+								<os>win32</os>
+								<ws>win32</ws>
+								<arch>x86_64</arch>
+							</environment>
+							<environment>
+								<os>linux</os>
+								<ws>gtk</ws>
+								<arch>x86</arch>
+							</environment>
+							<environment>
+								<os>linux</os>
+								<ws>gtk</ws>
+								<arch>x86_64</arch>
+							</environment>
+							<environment>
+								<os>macosx</os>
+								<ws>cocoa</ws>
+								<arch>x86_64</arch>
+							</environment>
+						</environments>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+</project>